Почему существует бесконечный цикл? C ++

0
do{
    cout << "your number"; cin >> z;


   if (z > 4){
    cout << "invalid answer" << endl;}
   else if (z == 4){
   cout << " no" << endl;}
   else {
   cout  <<"great!"   << endl; }
} while (z != 3, 2, 1);
}

В моем oppinion это: воспитывать "ваш номер" до тех пор, пока z не будет 3 или 2 или 1? Что не так?'

Теги:
loops
while-loop
infinite

2 ответа

5
while (z != 3, 2, 1);

В то время как ваше состояние не так, оно должно быть:

while (z != 3 && z != 2 && z != 1);

Если вы используете запятые, он будет вычислять (вычислять) все выражения, разделенные ими, и будет использовать последнее выражение.

В этом случае

(z != 3, 2, 1)

Он будет оценивать z! = 3, затем 2 и, наконец, будет использовать 1, ваше время будет выглядеть так:

while(1);

Это бесконечный цикл.

0

Проблема может падать на условие while. Возвращаемое значение вашего выражения "z != 3, 2, 1" будет оцениваться как "1", что означает true в C++. Таким образом, будет бесконечный цикл. Попробуйте переписать cond. эксп. как "z != 3 || z != 2 || z != 1".

Ещё вопросы

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