Ternary operator

Top  Previous  Next

What is translated > Operators > Ternary operator

The inline-if (ternary) operator was introduced in Delphi 13.

 

It has the following form:

 

if <condition> then <expr1> else <expr2>

 

It evaluates <condition> and returns either <expr1> or <expr2>.

 

Translation to C++

 

The expression is translated directly to the C++ ternary operator:

 

<condition> ? <expr1> : <expr2>

 

Examples

 

Simple expression

 

X := if A > 0 then 1 else 2;

X = (A > 0) ? 1 : 2;

 

Nested expression

 

X := if A > 0 then (if B > 0 then 1 else 2) else 3;

X = (A > 0) ? ((B > 0) ? 1 : 2) : 3;

 

Inside a larger expression

 

S := 'X' + (if Flag then 'Y' else 'Z');

S = L"X" + (Flag ? L"Y" : L"Z");

 

Notes

 

The operator has low precedence

-> Parentheses may be added in C++ to preserve evaluation order.

Both branches must be type compatible

-> Explicit casts may be required in C++.

The operator is lazy (only one branch is evaluated)

-> This matches the behavior of the C++ ternary operator.

 

 



This page belongs to the Delphi2Cpp Documentation

Delphi2Cpp home  Content