Conditional expressions
A conditional expression is a compound expression that contains
a condition that is implicitly converted to type bool in
C++(operand1), an expression to be evaluated if
the condition evaluates to true (operand2), and
an expression to be evaluated if the condition has the value false
(operand3).
The conditional expression contains one two-part operator. The ? symbol
follows the condition, and the : symbol appears between
the two action expressions. All expressions that occur between the ? and : are
treated as one expression.
- An arithmetic type
- A compatible pointer, structure, or union type
- void
Two objects are compatible when they have the same type but not
necessarily the same type qualifiers (volatile or const).
Pointer objects are compatible if they have the same type or are pointers
to void.
- If the value is true, the second operand is evaluated.
- If the value is false, the third operand is evaluated.
If the second and third expressions evaluate to arithmetic types, the usual arithmetic conversions are performed on the values. The types of the second and third operands determine the type of the result as shown in the following tables.
a ? b : c ? d : e ? f : g
a ? b : (c ? d : (e ? f : g))