我期望 getchar() != EOF 始终返回一个 bool 值,该值将分配给“c”,并且对于循环的每次迭代,输出将为 0 或 1,但是,我得到了多个输出对于单个输入。
#include<stdio.h>
main()
{
int c;
while(1)
{
printf("%d\n",c = (getchar() != EOF));
}
}
对于 输入1, 输出为11, 并为 输入-2, 输出为 111。
什么可能导致它打印多次?
最佳答案
额外的输出是因为对于每个输入,您都有一个附加字符作为行终止符。
尝试查看 getchar() 为您的每个输入返回的确切内容:
#include<stdio.h>
int main()
{
int c;
while(1)
{
c = getchar();
printf( "x%x\n", c );
/* printf("%d\n",c = (getchar() != EOF)); */
}
}
当你输入1时,你会得到两个字符,
x31
xa
当你输入-2时,你有三个字符,
x2d
x32
xa
由于以上都不是 EOF,因此您会从例程中得到多个“1”。
关于c - 单个 printf() 函数是否可以在循环中从 getchar() 获取输入时执行多次?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54509393/