c语言 - 练习 1-6: (第 17 页 K&R) - getchar() 问题



当我运行下面的程序时,输出给出第二个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'

最新更新