Скачать MetaTrader 5
Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий
Делись ссылками на форуме. Теперь они имеют Rich Content!
duckforce
16
duckforce 2016.08.25 10:51 

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


int a = 7;
while(a != 0 || a != 2 || a != 5 || a != 8){
a -= 1;}
Alexey Viktorov
5197
Alexey Viktorov 2016.08.25 12:16  

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

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

duckforce
16
duckforce 2016.08.25 12:43  
AlexeyVik:

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

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

в условии стоит "или"
Sergey Gridnev
4768
Sergey Gridnev 2016.08.25 13:43  
duckforce:
в условии стоит "или"

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

LRA
321
LRA 2016.08.25 16:26  
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 на экран или в файл



Алексей Тарабанов
7220
Алексей Тарабанов 2016.08.26 19:54  
Да, удалил уже :)
/
Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий