我期待的getchar()!= EOF总是返回一个布尔值,这将在但是分配给“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”。