Operações Booleanas

Negação Lógica NOT (!)

Operando da negação lógia (!) deve ser de tipo aritmético. O resultado é TRUE (1), se o valor do operando é FALSE (0); e é igual a FALSE (0), se o operando difere de FALSE (0).

if(!a) Print("não 'a'");

Operação lógica OR (||)

Operação OR lógico (||) entre valores x e y. O valor da expressão é TRUE (1), se os valores x ou y são verdadeiros (not null). Senão - FALSE (0).

if(x<0 || x>=max_bars) Print("fora da faixa");

Operação lógica AND (&&)

Operação lógica AND (&&) entre valores de x e y. O valor da expressão é TRUE (1), se os valores de x e y são verdadeiros (not null). Senão - FALSE (0).

Estimação breve de Operações Booleanas

O esquema do chamado "brief estimate" (estimação breve) é aplicado a operações booleanas, isto é, o cálculo da expressão é finalizado quando o resultado da expressão pode ser precisamente estimado.

//+------------------------------------------------------------------+
//| Programa Script da função start (iniciar)                        |
//+------------------------------------------------------------------+
void OnStart()
  {
//--- o primeiro exemplo de estimação breve
   if(func_false() && func_true())
     {
      Print("Operação &&: Você nunca verá esta expressão");
     }
   else
     {
      Print("Operação &&: Resultado da primeira expressão é falso, então a segunda não é calculada");
     }
//--- o segundo exemplo da estimação breve
   if(!func_false() || !func_true())
     {
      Print("Operação ||: Resultado da primeira expressão é verdadeiro,então a segunda não é calculada");
     }
   else
     {
      Print("Operação ||: Você nunca verá esta expressão");
     }
  }
//+------------------------------------------------------------------+
//| a função sempre retorna false                                    |
//+------------------------------------------------------------------+
bool func_false()
  {
   Print("Função func_false()");
   return(false);
  }
//+------------------------------------------------------------------+
//| a função sempre retorna true                                     |
//+------------------------------------------------------------------+
bool func_true()
  {
   Print("Função func_true()");
   return(true);
  }

Também Veja

Regras de Precedência