文字を押すと無限ループになるのはなぜですか?エラーチェック時にコードが無限ループにならないようにするにはどうすればよいですか?文字を押すと無限ループになるのはなぜですか?エラーチェックのためにどのように変更しますか?
#include <iostream>
using namespace std;
int main()
{
int number;
cout << "Enter a number in the range 1-100: ";
cin >> number;
while (number > 1 || number < 100)
{
cout << "ERROR: Enter a value in the range 1-100: ";
cin >> number;
}
return 0;
}
私は(かなりstackoverflow.com上、ここでいくつかの、より広いインターネット上のうち、さらにがある)良いの重複を見つけるために怠惰にだけど、問題の要点は、そのときの入力演算子であります入力を数値として解析できず、入力をバッファに残し、何も削除しません。ループのたびに同じ入力を何度も何度も繰り返し読み込みます。あなたを助けるための[ignore関数について](http://en.cppreference.com/w/cpp/io/basic_istream/ignore)を読んでください。 –
while文の条件が何をしているかを考えます。 – 1201ProgramAlarm
以前のコンパイラやビルドをpre-C++ 11モードで使用している場合、不正な入力に対して 'number'が変更されないため、*未定義の動作*があることにも注意してください。そして初期化されていないので、*不定値*を持ち、ループ内の比較によってUBが得られます。 –