Я пытаюсь написать цикл, который будет повторяться до тех пор, пока пользователь не введет один из правильных вариантов (1 или 0). По какой-то причине, когда у меня есть цикл, написанный ниже, он создает бесконечный цикл.
Я намереваюсь, чтобы цикл выполнялся только тогда, когда управление не равно 0 ИЛИ не 1, но по какой-то причине оно всегда выполняется и становится бесконечным циклом.
cout<<"Please enter 1 for another customer or 0 to quit : ";
cin>>control;
**while ((control != 0 )|| (control != 1))**
{
cout<<"Invalid Entry! Please enter a 1 to enter another customer or 0 to quit: ";
cin>>control;
}
Я изменил его, пока управление меньше 0 или больше 1, что работает, но я все еще запутался относительно того, почему другой цикл не работает.
Вы должны использовать && operator.
while ((control != 0 ) && (control != 1))
(control != 0) || (control != 1)
эквивалентно,
!(control == 0 && control == 1)
но,
(control == 0 && control == 1)
всегда ложно (такого числа нет).
Следовательно, все выражение всегда будет иметь истинное значение.
Единственный способ вырваться
while ((control != 0 )|| (control != 1))
является
!(control != 0) && !(control != 1)
что эквивалентно
control == 0 && control == 1
что невозможно для всех целых чисел.
control
Проверьте cplusplus.com/reference/ios/ios/fail