forked from rosh/MQL5Book
52 lines
2 KiB
MQL5
52 lines
2 KiB
MQL5
//+------------------------------------------------------------------+
| |
//| ExprConditional.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()
| |
{
| |
bool A = false, B = false, C = true;
| |
int x = 1, y = 2, z = 3, p = 4, q = 5, f = 6, h = 7;
| |
| |
int r0 = x > y ? z : p != 0 && q != 0 ? f / (p + q) : h; // 0
| |
int r1 = A ? x : C ? p : q; // 4
| |
int r2 = A ? B ? x : y : z; // 3
| |
int r3 = A ? B ? C ? p : q : y : z; // 3
| |
int r4 = A ? B ? x : y : C ? p : q; // 4
| |
int r5 = A ? f : h ? B ? x : y : C ? p : q; // 2
| |
| |
// errors:
| |
// ';' - unexpected token
| |
// ';' - ':' colon sign expected
| |
// int r6 = A ? B ? x : y; // one of conditions is incomplete
| |
| |
PRT(x > y ? z : p != 0 && q != 0 ? f / (p + q) : h);
| |
PRT(A ? x : C ? p : q);
| |
PRT(A ? B ? x : y : z);
| |
PRT(A ? B ? C ? p : q : y : z);
| |
PRT(A ? B ? x : y : C ? p : q);
| |
PRT(A ? f : h ? B ? x : y : C ? p : q);
| |
| |
// warning: expression not boolean
| |
// treated as: A ? f : ((h + B) ? x : y),
| |
// where (h + B) goes for boolean
| |
int w = A ? f : h + B ? x : y; // 1
| |
| |
// ok: explicit parentheses
| |
int v = (A ? f : h) + (B ? x : y); // 9
| |
| |
PRT(A ? f : h + B ? x : y);
| |
PRT((A ? f : h) + (B ? x : y));
| |
| |
}
| |
//+------------------------------------------------------------------+
|