2 回答

TA貢獻(xiàn)883條經(jīng)驗(yàn) 獲得超454個(gè)贊
“==1 的話不是讀取成功一個(gè)值繼續(xù)嗎”——那么你的意圖是“繼續(xù)”什么呢?
scanf 返回 1 確實(shí)表示成功讀取這個(gè)值。== 1 的判斷結(jié)果為 true,這會(huì)進(jìn)入執(zhí)行 while 循環(huán)體,可這個(gè)循環(huán)體只是打印出一句話,然后又繼續(xù)執(zhí)行 while 判斷部分的 scanf——你還是在這個(gè) while 循環(huán)中沒(méi)出去!? ?所以如果你輸入正確,那你根本沒(méi)法“繼續(xù)”,而是被困在了 while 循環(huán)中。
而且,你這樣判斷“讀取成功”的行為沒(méi)有意義?。? 如果成功讀取那就執(zhí)行后面的語(yǔ)句唄,為何要判斷呢??
如果是判斷“讀取失敗”的話還有點(diǎn)用。如果讀取失敗,就提示你再次輸入正確的值。這一般可以用循環(huán)來(lái)處理,比如 while (scanf讀取,判斷是否失敗) {讀取失敗,提示你再次輸入}。
但是代碼中 while(scanf("%d",&n[i])!=1) {printf("continu\n");} 這個(gè)方法并不能達(dá)到目的!
如果 scanf 匹配“輸入流”中的內(nèi)容失敗,那么輸入流中錯(cuò)誤的內(nèi)容還會(huì)留在輸入流中!?
那么一旦 scanf 匹配失敗,scanf 返回 0,則滿足 while 循環(huán)條件,while 的循環(huán)體打印出一句"continu"后開(kāi)始下一次循環(huán),即再次執(zhí)行 while 的判斷部分。由于輸入流中的錯(cuò)誤內(nèi)容還在,scanf 仍然會(huì)讀到這些錯(cuò)誤內(nèi)容,仍然會(huì)匹配失敗......這會(huì)導(dǎo)致 while 死循環(huán)!
- 2 回答
- 0 關(guān)注
- 2348 瀏覽
添加回答
舉報(bào)