int main()
{
unsigned short wC;
while(1)
{
cout << "Enter the Value"<<endl;
cin >> wC;
if(wC < 0 || wC > 3)
{
cout << "Wrong value, Please Enter again" << endl;
}
else break;
}// end of while
cout << "The value is : " << wC << endl;
}//end of main
В приведенном выше коде, когда я даю значение в диапазоне коротких 0xffff
, он отлично работает. И выходит из цикла и печатает значение только тогда, когда пользователь дал значение для wC
в диапазоне от 0 до 3, в противном случае приглашение ввести Enter снова и ждать ввода пользователя.Почему я получаю бесконечный цикл?
Но если значение, введенное для wC
, составляет более 0xffff
, то оно переходит к бесконечной петле.
Я думаю, что из-за значения все еще существуют входные данные cin
буфер или что? Пожалуйста, помогите и предложите какое-либо решение (подсказку), чтобы оно работало.
ПРИМЕЧАНИЕ. Пользователь может предоставить любое целочисленное значение. код должен отфильтровать его. Использования g++
компилятора Ubuntu/Linux
... и sizeof(unsigned short int) = 2 bytes
Это потому, что 'cin' находится в плохом состоянии после ошибки и не получит никакого ввода, пока вы не очистите плохой бит. –
Поскольку 'wC' не имеет знака, он никогда не может быть меньше нуля, поэтому для этого нет точки проверки. –