第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問題,去搜搜看,總會(huì)有你想問的

c != EOF和((c=getchar())!=EOF是不一樣的嗎?

c != EOF和((c=getchar())!=EOF是不一樣的嗎?

C
暮色呼如 2022-05-25 13:09:25
#include <stdio.h>main(){int c;c = getchar();while( c != EOF)putchar(c);}執(zhí)行結(jié)果是不停的循環(huán)一個(gè)字母,根本停不下來。如果把改一下,變成#include <stdio.h>main(){int c;while((c=getchar())!=EOF)putchar(c);}則完全復(fù)制輸入的東西到輸出。原來這兩個(gè)是不一樣的啊。
查看完整描述

2 回答

?
慕標(biāo)5832272

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



查看完整回答
反對(duì) 回復(fù) 2022-05-30
?
嗶嗶one

TA貢獻(xiàn)1854條經(jīng)驗(yàn) 獲得超8個(gè)贊

第一個(gè)你只有1個(gè)getchar,只接受一次輸入,然后就死循環(huán)了
第二個(gè)是你每getchar一次就判斷一次,結(jié)束了就退出
當(dāng)然不一樣

查看完整回答
反對(duì) 回復(fù) 2022-05-30
  • 2 回答
  • 0 關(guān)注
  • 222 瀏覽

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購(gòu)課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)