2 回答

TA貢獻(xiàn)1966條經(jīng)驗(yàn) 獲得超4個(gè)贊
條件判斷邏輯不一樣執(zhí)行自然不一樣,
int c;
c = getchar();
while( c != EOF)
putchar(c);
首先看這個(gè) EOF是-1的意思 你是用的getchar()比如我們輸入一個(gè) (a) 那么int c得到的就是97 為什么是97
應(yīng)為你是獲取一個(gè)字符 根據(jù)ascii碼表對(duì)應(yīng) a的十進(jìn)制就是97 接下來我們才看看循環(huán)條件
條件是 a != EOF 我剛剛說了EOF代表的是-1 (為什么是-1?這是c用來判斷文件指針是否執(zhí)行到末尾的一個(gè)結(jié)束標(biāo)志 可以右鍵查看EOF 的宏定義 = #define EOF (-1))很明顯了
c 現(xiàn)在 = (a)97 != EOF(-1) c = 91 eof = -1 確實(shí)是不等于 那么條件成立
輸出后在繼續(xù)判斷 c!=eof c還是97并沒有改變 還是不等于 就造成了死循環(huán)
那么在看第二個(gè)代碼
int c;
while((c=getchar())!=EOF)
putchar(c);
這里還是一樣 輸入一個(gè)a c = (a)97; 那么在判斷條件 而c是(a)97 肯定不等于eof(-1) 那么添加成立 執(zhí)行輸出a
關(guān)鍵點(diǎn)事第二次循環(huán)了 輸出后又會(huì)再次執(zhí)行條件判斷 一看條件是getchar 那么先執(zhí)行g(shù)etchar這個(gè)c函數(shù) 等待輸入后
在判斷c 是不是不等于eof
所以這個(gè)的效果是 沒輸入一個(gè)字符 輸出 后在等待輸入一個(gè)再發(fā) 在輸出 一直循環(huán)直到遇見eof

TA貢獻(xiàn)1854條經(jīng)驗(yàn) 獲得超8個(gè)贊
第一個(gè)你只有1個(gè)getchar,只接受一次輸入,然后就死循環(huán)了
第二個(gè)是你每getchar一次就判斷一次,結(jié)束了就退出
當(dāng)然不一樣
- 2 回答
- 0 關(guān)注
- 222 瀏覽
添加回答
舉報(bào)