c语言 - 我使用函数"putchar()"打印测试结果,但我得到了一个问号



所以就像标题所暗示的那样,我试图使用putchar()来打印不等于测试!=的结果,但我得到的输出是一个问号。

这是代码:

#include <stdio.h>
main()
{
int c;
c = getchar() != EOF;
putchar(c);
}

我用过printf()它有效:

#include <stdio.h>
main()
{
printf("%d",getchar()!=EOF);
}

我的问题是:为什么它不适用于putchar

首先,接受比较getchar()!=EOF将产生一个布尔值,当解释为任何整数类型时,该值将转换为1(表示真(或0(假(,该语句:

printf("%d",getchar()!=EOF);

将此转换的值打印为格式化整数 - 因此您将看到打印的"1"或"0"。

但是,声明:

putchar(c);

输出由c值表示的实际字符(通常是 ASCII 值,但不一定(。由01表示的字符不是"可打印"字符,因此您的控制台将显示一些内容,指示 - 在您的情况下,是一个问号。

putchar将由其代码值标识的字符发送到标准输出。 在大多数 C 实现中,0 和 1 不是字符"0"或"1"的代码。若要从包含 0 或 1 的int c中获取"0"或"1"的代码值,请使用'0' + c

printf("%d",getchar()!=EOF)将参数值的格式设置为十进制数字,以便生成相应的字符。

最新更新