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

Exercise 1-6: (page 17 K&R) - getchar() question

当我运行下面的程序时,输出给秒1。我调试程序,但我不明白为什么编译器随时都写秒1?

output like this.

#include <stdio.h>

main()
{
int c;

while (c = getchar() != EOF)
    printf("%d\n", c);
printf("%d - at EOF\n", c);
}

您按下的 Enter 键将输入从终端“发送”到程序,作为换行符添加到输入缓冲区中 '\n',这将是在循环的第二次迭代中读取。

while语句中的条件

while (c = getchar() != EOF)

相当于

while (c = ( getchar() != EOF) )

由于运算符优先级。如果输入没有被中断,这个逻辑表达式 getchar() != EOF 总是产生 1

你需要写

while ( ( c = getchar() ) != EOF)