Логические операции

Логическое отрицание НЕ(!)

Операнд операции логического отрицания НЕ(!) должен иметь арифметический тип. Результат равен ИСТИНА(1), если значение операнда есть ЛОЖЬ(0), и равен ЛОЖЬ(0), если операнд не равен ЛОЖЬ(0).

if(!a) Print("не 'a'");

 
Логическая операция ИЛИ (||)

Логическая операция ИЛИ (||) значений x и y. Значением выражения является ИСТИНА(1), если истинно (не нуль) значение x или y. В противном случае - ЛОЖЬ(0).

if(x<0 || x>=max_bars) Print("out of range");

 
Логическая операция И (&&)

Логическая операция И (&&) значений x и y. Значением выражения является ИСТИНА(1), если значения x и y истинны (не нуль). В противном случае - ЛОЖЬ(0).

Короткая оценка логических операций

К логическим выражениям применяется схема так называемой "короткой оценки", то есть, вычисление выражения прекращается в тот момент, когда можно точно оценить результат выражения.

//+------------------------------------------------------------------+
//| Script program start function                                    |
//+------------------------------------------------------------------+
void OnStart()
  {
//--- первый пример короткой оценки
   if(func_false() && func_true())
      Print("Операция &&: Это сообщение вы никогда не увидите");
   else
      Print("Операция &&: Результат первого выражения false, поэтому второе выражение не вычислялось");
//--- второй пример короткой оценки
   if(!func_false() || !func_true())
      Print("Операция ||: Результат первого выражения true, поэтому второе выражение не вычислялось");
   else
      Print("Операция ||: Это сообщение вы никогда не увидите");
  }
//+------------------------------------------------------------------+
//| функция всегда возвращает false                                   |
//+------------------------------------------------------------------+
bool func_false()
  {
   Print("Функция func_false()");
   return(false);
  }
//+------------------------------------------------------------------+
//| функция всегда возвращает true                                    |
//+------------------------------------------------------------------+
bool func_true()
  {
   Print("Функция func_true()");
   return(true);
  }

 

Смотри также

Приоритеты и порядок операций