这直接取自 K&R 书:
的优先级
!=
高于 的=
,这意味着在没有括号的情况下,关系测试!=
将在赋值之前完成=
。所以声明c = getchar() != EOF
相当于
c = (getchar() != EOF)
这具有将 c 设置为 0 或 1 的不良影响,具体取决于 getchar 的调用是否返回文件结尾。(在第 2 章中有更多内容。)
练习 1-6。验证表达式
getchar() != EOF
是 0 还是 1。
我无法理解如何做这个练习以及理解被引用的段落是怎么回事。
我知道 EOF 是 int 类型的符号常量,通常保持值 -1。由于负值 int 在进行比较时永远不能保持与 char 相同的值,因此需要将其提升为 int ,然后以某种方式发出文件结束的信号。
我也知道没有上面指定的括号,比较!=
是在分配之前完成的,但这实际上是什么意思?该功能发生了什么?我还打印了 EOF 的值,它是 -1 当它说验证它是 0 还是 1 时,这个练习意味着什么?