我使用函数 "putchar()" 来打印测试结果,但我得到的却是一个问号
I used the function "putchar()" to print the result of a test, but i got a question mark instead
就像标题所暗示的那样,我尝试使用 putchar()
来打印不等于测试的结果 !=
但我得到的输出是一个问号。
代码如下:
#include <stdio.h>
main()
{
int c;
c = getchar() != EOF;
putchar(c);
}
我用过 printf()
并且有效:
#include <stdio.h>
main()
{
printf("%d",getchar()!=EOF);
}
我的问题是:为什么它不适用于 putchar
?
putchar
将一个由其代码值标识的字符发送到标准输出。在大多数 C 实现中,0 和 1 不是字符“0”或“1”的代码。要从包含 0 或 1 的 int c
中获取“0”或“1”的代码值,请使用 '0' + c
.
printf("%d",getchar()!=EOF)
将参数值格式化为十进制数字,以便生成适当的字符。
首先,接受比较 getchar()!=EOF
将产生一个布尔值,当被解释为任何值时,它将被转换为 1
(真)或 0
(假)整型,语句:
printf("%d",getchar()!=EOF);
将此转换的值打印为 格式 整数 - 因此您将看到打印的“1”或“0”。
然而,声明:
putchar(c);
输出由 c
的值表示的实际字符(通常但不一定是 ASCII 值)。 0
和 1
表示的字符不是 'printable' 字符,因此您的控制台将显示一些内容,表明 - 在您的情况下,是一个问号。
就像标题所暗示的那样,我尝试使用 putchar()
来打印不等于测试的结果 !=
但我得到的输出是一个问号。
代码如下:
#include <stdio.h>
main()
{
int c;
c = getchar() != EOF;
putchar(c);
}
我用过 printf()
并且有效:
#include <stdio.h>
main()
{
printf("%d",getchar()!=EOF);
}
我的问题是:为什么它不适用于 putchar
?
putchar
将一个由其代码值标识的字符发送到标准输出。在大多数 C 实现中,0 和 1 不是字符“0”或“1”的代码。要从包含 0 或 1 的 int c
中获取“0”或“1”的代码值,请使用 '0' + c
.
printf("%d",getchar()!=EOF)
将参数值格式化为十进制数字,以便生成适当的字符。
首先,接受比较 getchar()!=EOF
将产生一个布尔值,当被解释为任何值时,它将被转换为 1
(真)或 0
(假)整型,语句:
printf("%d",getchar()!=EOF);
将此转换的值打印为 格式 整数 - 因此您将看到打印的“1”或“0”。
然而,声明:
putchar(c);
输出由 c
的值表示的实际字符(通常但不一定是 ASCII 值)。 0
和 1
表示的字符不是 'printable' 字符,因此您的控制台将显示一些内容,表明 - 在您的情况下,是一个问号。