2011-10-11 18 views
2

所以我讀數來說,K & [R的書,我有一個關於這個代碼的問題:的getchar()不一致之處變量

int c; 
c = getchar(); 

爲什麼他們使用整型變量?不是getchar()返回一個字符的值嗎?所以一個字符會更合適?請賜教。

+1

答案是在K&R的書本身,在同一頁面的代碼(在我的副本第16頁)中第一次出現的。 – schot

回答

4

getchar()需要能夠指示它何時到達輸入的末尾。它通過返回EOF這是故意在有效的char範圍之外,因此它不會與出現在輸入上的字符衝突。

+0

+1這非常明智。但看看[一個偉大的問題..](http://stackoverflow.com/questions/3860943/can-sizeofint-ever-be-1-on-a-hosted-實施)。看起來'getc' *能*返回'EOF'作爲一個有效的字符(所以'feof'必須被測試)。 – cnicutar

+0

@cnicutar:感謝分享該鏈接。 – NPE

1

這樣當getchar()返回EOF時,您可以將EOF與真實有效的char區分開來。

0

getchar在輸入文件位於eof時返回EOF(-1)。

2

getchar函數返回一個int,因爲它需要一種方法來在嘗試讀取文件時發出錯誤信號。由於char類型只需要保存所有可能的字符值,因此需要更大的類型才能返回EOF值。