Operaciones lógicas

Negación lógica NOT(!)

El operando de la operación de negación lógica NOT(!) debe tener el tipo aritmético. El resultado es igual a VERDADERO(1) si el valor del operando es FALSO(0), y es igual a FALSO(0) si el operando no es igual a FALSO(0).

if(!a) Print("no 'a'");

 
Operación lógica OR (||)

Operación lógica OR (||) de los valores x y y. El valor de la expresión es VERDADERO(1) si el valor de x o y es verdadero (no cero). En caso contrario es FALSO(0).

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

 
Operación lógica AND (&&)

Operación lógica AND (&&) de los valores x y y. El valor de la expresión es VERDADERO(1) si el valor de x y y son verdaderos (no cero). En caso contrario es FALSO(0).

Breve estimación de operaciones lógicas

Tratándose de operaciones lógicas, se les aplica un esquema llamado "de breve estimación". Esto quiere decir que el cálculo de una operación lógica se finaliza cuando su resultado puede ser estimado de forma precisa.

//+------------------------------------------------------------------+
//| Script program start function                                    |
//+------------------------------------------------------------------+
void OnStart()
  {
//--- el primer ejemplo de breve estimación
   if(func_false() && func_true())
     {
      Print("Operación &&: Este mensaje nunca estará visible para Ud.");
     }
   else
     {
      Print("Operación &&: El resultado de la primera expresión es false, por eso la segunda no se ha calculado");
     }
//--- el segundo ejemplo de breve estimación
   if(!func_false() || !func_true())
     {
      Print("Operación ||: El resultado de la primera expresión es true, por eso la segunda no se ha calculado");
     }
   else
     {
      Print("Operación ||: Este mensaje nunca estará visible para Ud.");
     }
  }
//+------------------------------------------------------------------+
//| la función siempre devuelve false                                   |
//+------------------------------------------------------------------+
bool func_false()
  {
   Print("Función func_false()");
   return(false);
  }
//+------------------------------------------------------------------+
//| la función siempre devuelve true                                    |
//+------------------------------------------------------------------+
bool func_true()
  {
   Print("Función func_true()");
   return(true);
  }

Véase también

Prioridades y orden de las operaciones