为什么圆括号不能省略?
对 while 语句的条件部分来说,赋值表达式两边的圆括号不能省略。不等于运算符!=的优先级比赋值运算符=的优先级要高,这样,在不使用圆括号的情况下关系测试!=将在赋值=操作之前执行。因此语句
c = getchar() != EOF
等价于语句
c = (getchar() != EOF)
该语句执行后,c 的值将被置为 0 或 1(取决于调用 getchar 函数时是否碰到文件结束标志),这并不是我们所希望的结果(更详细的内容,请参见第 2 章的相关部分)。
练习 1-6 验证表达式 getchar() != EOF 的值是 0 还是 1。
练习 1-7 编写一个打印 EOF 值的程序。