The ternary operator
The ternary
if-else is unusual because it has three operands.
It is truly an operator because it produces a value, unlike the ordinary
if-else statement. It consists of three
expressions: if the first expression (followed by a ?) evaluates to
true, the expression following the ? is evaluated and its result
becomes the value produced by the operator. If the first expression is
false, the third expression (following a :) is executed and its
result becomes the value produced by the operator.
The conditional operator can be used for
its side effects or for the value it produces. Here’s a code fragment that
demonstrates both:
a = --b ? b : (b = -99);
Here, the conditional produces the
rvalue. a is assigned to the value of b if the result of
decrementing b is nonzero. If b became zero, a and b
are both assigned to -99. b is always decremented, but it is assigned to
-99 only if the decrement causes b to become 0. A similar statement can
be used without the “a =” just for its side
effects:
--b ? b : (b = -99);
Here the second B is superfluous, since
the value produced by the operator is unused. An expression is required between
the ? and :. In this case, the expression could simply be a
constant that might make the code run a bit
faster.