当我运行下面的程序时,输出给出第二个1。我调试了程序,但我不明白为什么编译器会随时编写第二个1?
像这样的输出。
#include <stdio.h>
main()
{
int c;
while (c = getchar() != EOF)
printf("%dn", c);
printf("%d - at EOFn", c);
}
while语句中的条件
while (c = getchar() != EOF)
相当于
while (c = ( getchar() != EOF) )
由于操作员的优先级。如果输入没有中断,则该逻辑表达式getchar() != EOF
总是产生1
。
你需要写
while ( ( c = getchar() ) != EOF)
按下Enter键即可"发送";从终端到程序的输入被添加到输入缓冲器中作为将在循环的第二次迭代中读取的新行'n'
。