EOF练习1-6 K&R C编程语言

这可以直接从K&R书中获取:

!=的优先级高于= ,这意味着在没有括号的情况下,关系测试!=将在赋值=之前完成。 所以声明

 c = getchar() != EOF 

相当于

 c = (getchar() != EOF) 

这具有将c设置为0或1的不期望的效果,这取决于getchar的调用是否返回文件末尾。 (更多相关内容见第2章。)

练习1-6。 validation表达式getchar() != EOF是0还是1。

我无法理解如何进行此练习以及了解块引用段落的内容。

我知道EOF是int类型的符号常量,通常保持值-1。 由于负值int在进行比较时永远不能保持与char相同的值,因此需要将其提升为int,然后以某种方式表示文件的结尾。

我也没有上面指定的括号进行比较!=在分配之前完成但是这实际意味着什么? 这个function发生了什么? 我还打印了EOF的值,它是-1,当它说validation它是0还是1时,练习是什么意思?

这是说:

c = (getchar() != EOF)

意味着从stdin读取一个字符,然后将其与EOF进行比较。 如果为真,则结果为1,如果为假则为0。 然后将该结果分配给c 。 读取的字符丢失,因此“不良影响”。

它希望你以这种方式自己运行它,看看如何通过发送EOF与任何其他角色来产生0和1。