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)