問題: 未処理の入力タイプの不一致での無限ループ
数値入力を予期するループでは、数値入力が一致しない場合に無限ループが発生する可能性があります。 -数値入力は cin 経由で提供されます。この動作は、cin が入力を処理する方法を理解することで説明できます。
説明:
cin は数値を予期しているときに非数値入力に遭遇すると、失敗状態に入ります。この状態では、cin はさらなる入力のプロンプトを停止し、ユーザー入力を待たずにループが続行されます。
解決策: 入力型エラーの処理
無限大を回避するにはこのような状況ではループが発生するため、入力タイプのエラーを検出して処理することが重要です。 1 つのアプローチは、cin が失敗状態にあるかどうかを確認することです。
if (cin.fail()) { cout << "ERROR: Invalid input" << endl; // Clear the fail state cin.clear(); // Discard bad input characters (e.g., using numeric_limits or ignore()) }
失敗状態を処理することで、cin を通常の動作状態にリセットでき、エラーが解決された後もループを続行できるようになります。
追加のテクニック:
より堅牢な入力検証については、次の使用を検討してください。テクニック:
以上がC での未処理の入力型の不一致によって引き起こされる無限ループを防ぐにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。