字元輸入的無限循環問題
執行提供的程式碼時,如果輸入非整數位元符而不是輸入,則會發生無限循環一個數字。此行為是在正數驗證過程中出現的。
具體來說,問題在於檢查 num1 有效性的內部 while 迴圈。如果輸入字母字符,則 cin >>> num1 語句失敗,設定失敗位標誌。但是,cin 緩衝區未清除,導致錯誤地假設相同的無效輸入仍然存在。
修復問題
要解決此問題,需要額外的邏輯需要處理無效輸入並清除cin緩衝區:
do { while(!(cin >> num1)) { cout ::max(), '\n'); } if(num1 <p>在這個修改後的程式碼中,使用了一個外部do-while迴圈來不斷提示等待輸入,直到輸入有效的正整數。 </p><p>輸入無效字元後,呼叫 cin.clear() 重設failbit 標誌。隨後,cin.ignore() 用於丟棄輸入緩衝區中的所有剩餘字符,包括無效字符以及可能跟隨的任何空格或換行符。 numeric_limits<streamsize>::max() 參數指定忽略下一個換行符之前的所有字元。 </streamsize></p><p>透過這些調整,程式碼可確保僅處理有效的整數輸入,並在非以下情況下避免無限迴圈:輸入整數位符。 </p>
以上是在 C 中輸入整數時如何防止無限循環?的詳細內容。更多資訊請關注PHP中文網其他相關文章!