тема про while и ошибку в нем

 

Всем привет, наткнулся на глупенькую ошибку. Почему то не срабатывает условие цикла while, вот код:


int a = 7;
while(a != 0 || a != 2 || a != 5 || a != 8){
a -= 1;}
 

Потому что так поставлено условие.

В таком наборе, чтобы условие стало ложным, переменная должна быть одновременно равна всем перечисленным 0, 2, 5 и 8. Но так не бывает.

 
AlexeyVik:

Потому что так поставлено условие.

В таком наборе, чтобы условие стало ложным, переменная должна быть одновременно равна всем перечисленным 0, 2, 5 и 8. Но так не бывает.

в условии стоит "или"
 
duckforce:
в условии стоит "или"

У вас условие цикла while всегда истинно. Цикл будет идти бесконечно. 

 
duckforce:  не срабатывает условие цикла while
#property strict

void OnStart()
{
int a = 7;
  while(a != 0 || a != 2 || a != 5 || a != 8)
  {
    a--;
    Alert("a=",a, "     a!=0 = ",a!=0, "     a!=2 = ",a!=2,"     a!=0 || a!=2  = ",a!=0 || a!=2 );
    if(a<-2)return;
  }
}

 

Выражение ИЛИ равно true, если хотя бы одна часть true. Здесь все почти всегда true. Для разрешения проблем используйте функцию Alert - полезная штука

Поделитесь секретом, для чего это нужно? Где тут профит? Если это просто для общего развития, то надо брать примеры проще и все выводить Alert на экран или в файл



 
Да, удалил уже :)
Причина обращения: