forked from rosh/MQL5Book
42 lines
1.6 KiB
MQL5
42 lines
1.6 KiB
MQL5
//+------------------------------------------------------------------+
| |||
//| ExprLogical.mq5 |
| |||
//| Copyright 2021, MetaQuotes Ltd. |
| |||
//| https://www.mql5.com |
| |||
//+------------------------------------------------------------------+
| |||
| |||
#property copyright "Copyright 2021, MetaQuotes Ltd."
| |||
#property link "https://www.mql5.com"
| |||
#property version "1.00"
| |||
| |||
#define PRT(A) Print(#A, "=", (A))
| |||
| |||
//+------------------------------------------------------------------+
| |||
//| Script program start function |
| |||
//+------------------------------------------------------------------+
| |||
void OnStart()
| |||
{
| |||
int x = 3, y = 4, z = 5;
| |||
| |||
bool expr1 = x == y && z > 0; // false, x != y, z does'n matter
| |||
bool expr2 = x != y && z > 0; // true, both correct
| |||
bool expr3 = x == y || z > 0; // true, due to z > 0
| |||
| |||
bool expr4 = !x; // false, need x == 0 to be true
| |||
| |||
bool expr5 = x > 0 && y > 0 && z > 0; // true, all 3 correct
| |||
// warning: check operator precedence for possible error;
| |||
// use parentheses to clarify precedence
| |||
bool expr6 = x < 0 || y > 0 && z > 0; // true, y and z suffice
| |||
bool expr7 = x < 0 || y < 0 || z > 0; // true, z suffices
| |||
| |||
PRT(x == y && z > 0);
| |||
PRT(x != y && z > 0);
| |||
PRT(x == y || z > 0);
| |||
| |||
PRT(!x);
| |||
| |||
PRT(x > 0 && y > 0 && z > 0);
| |||
PRT(x < 0 || y > 0 && z > 0);
| |||
PRT(x < 0 || y < 0 || z > 0);
| |||
}
| |||
//+------------------------------------------------------------------+
|