HP C/iX Reference Manual (31506-90011)
Chapter 5 83
Expressions
Conditional Operator
Conditional Operator
The conditional operator (?:) performs an if-then-else using three expressions.
Syntax
conditional-expression
:=
logical-OR-expression
logical-OR-expression
?
expression
:
conditional-expression
Description
A conditional expression consists of three expressions. The first and the second expressions
are separated with a ? character; the second and third expressions are separated with a :
character.
The first expression is evaluated. If the result is nonzero, the second expression is
evaluated and the result of the conditional expression is the value of the second
expression. If the first expression's result is zero, the third expression is evaluated and the
result of the conditional expression is the value of third expression.
The first expression can have any scalar type. The second and third expressions can be any
of the following combinations:
1. Both arithmetic.
• The usual arithmetic conversions are performed on the second and third expressions.
The resulting type of the conditional expression is the result of the conversion.
2. Both are pointers to type T.
• Arrays are converted to pointers, if necessary. The result is a pointer to type T.
3. Identical type object.
• The types can match and be structure, union, or void. The result is that specific
type.
4. Pointer and Null pointer constant or a pointer to void
• One expression may be a pointer (or array that is converted to a pointer) and the
other a null pointer constant or a pointer to void. The result is the same type as the
type of the pointer operand.
In all cases, the result is not an lvalue.
Note that either the second or the third expression is evaluated, but not both. Although not
required for readability, it is considered good programming style to enclose the first
expression in parentheses. For example:
min = (val1<val2) ? val1:val2;