實驗很簡單,即驗證 getchar() != EOF的值為多少
以下是驗證程式的代碼
#include <stdio.h>
int main(void)
{
int ch;
while(ch = getchar() != EOF)
printf("%d",ch);
printf("%d",ch);
return 0;
}
輸入與對應的實驗現象如下
輸入 輸出
1. 11\n 111
2. ctrl+z 0
3. 1和ctrl+z 11 (回圈繼續)
不能理解的是第三次輸入,我理解第三次輸出應該為10并結束回圈程式,但為什么結果是11呢。再次嘗試輸入,發現ctrl+z必須緊跟在新行開頭并且在換行符前才能結束回圈程式。不理解為什么。
uj5u.com熱心網友回復:
while(ch = getchar() != EOF)
改一下
while((ch = getchar()) != EOF)
因為!=優先級比=高,因此會把判斷結果賦值給ch,而不是getchar()的回傳值賦值給ch
uj5u.com熱心網友回復:
個人覺得應該和系統環境以及編譯器或者IDE有關,不是每種組合的運行結果都是這樣,我的linux+gcc輸入ctrl+z就會提示已停止,不會輸出0。uj5u.com熱心網友回復:
沒有問題,我故意不加括號的,不是為了讀取字符,而是為了測驗EOF,最終的輸出只有1和0轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/201846.html
標籤:C語言
上一篇:Qt面板中的按鈕一直回應
下一篇:VC++6.0運行庫
