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));
|
|
|
|
}
|
|
//+------------------------------------------------------------------+
|