回复 3楼 Ryker
关键是我现在不清楚ch里是什么内容在和EOF进行比较。
,是用户输入的字符 还是getchar()的返回值? 还是我一开始就理解错了。。
以下摘自《C和指针》第五章 P70 最后一段:
-----------------------------------------------------------------------------------------------------------------------------------------------------------
EOF需要的位数比字符型值所能提供的位数要多,这也是getchar返回一个整型值而不是字符型值得原因,然而,把getchar的返回值首先存储于ch中将导致它被截短。然后这个被截断的值被提升为整型并与EOF进行比较。当这段存在错误的代码在使用有符号字符集的机器上运行时,如果读取了一个值为\337的字节时,循环将会终止,因为这个值截断在提升之后与EOF相等。当这段代码在使用无符号字符集的机器上运行时,这个循环将永远不会停止。
-----------------------------------------------------------------------------------------------------------------------------------------------------------
这一段最后一句话也不理解