我期望getchar()!= EOF总是返回一个布尔值,该值将分配给'c',并且每次循环迭代的输出将为0或1,但是,我得到了多个输出用于单次输入。
#include<stdio.h>
main()
{
int c;
while(1)
{
printf("%d\n",c = (getchar() != EOF));
}
}
对于 输入1, 输出是11 和为 输入-2, 输出为111。
什么原因可能导致它多次打印?
答案 0 :(得分:1)
额外的输出是因为对于每个输入,行终止符都有一个附加字符。
尝试执行此操作,以准确查看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”。