2 回答

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