C ++ бесконечный цикл

0

Я пытаюсь написать цикл, который будет повторяться до тех пор, пока пользователь не введет один из правильных вариантов (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, что работает, но я все еще запутался относительно того, почему другой цикл не работает.

Теги:
while-loop

3 ответа

4

Вы должны использовать && operator.

while ((control != 0 ) && (control != 1))
2
(control != 0) || (control != 1)

эквивалентно,

!(control == 0 && control == 1)

но,

(control == 0 && control == 1) 

всегда ложно (такого числа нет).

Следовательно, все выражение всегда будет иметь истинное значение.

1

Единственный способ вырваться

while ((control != 0 )|| (control != 1))

является

!(control != 0) && !(control != 1)

что эквивалентно

control == 0 && control == 1

что невозможно для всех целых чисел.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню