13.1 这样的代码有什么问题? char c; while((c = getchar()) != EOF) ...

第一, 保存 getchar 的返回值的变量必须是 int 型。getchar() 可能返回任何字符 值, 包括 EOF。如果把 getchar 的返回值截为 char 型, 则正常的字符可能会被错误 的解释为 EOF, 或者 EOF 可能会被修改 (尤其是 char 型为无符号的时候), 从而永不 出现。

参考资料: [K&R1, Sec. 1.5 p. 14]; [K&R2, Sec. 1.5.1 p. 16]; [ISO, Sec. 6.1.2.5, Sec. 7.9.1, Sec. 7.9.7.5]; [H&S, Sec. 5.1.3 p. 116, Sec. 15.1, Sec. 15.6]; [CT&P, Sec. 5.1 p. 70]; [PCS, Sec. 11 p. 157]。

翻译朱群英、孙云, LaTeX2HTML 编译 朱群英 (2005-06-23)