HP 3000 Manuals

Conditional Operator [ HP C/iX Reference Manual ] MPE/iX 5.0 Documentation


HP C/iX Reference Manual

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;

Example 

This expression returns x if a is 0, or return y if a is not 0.

     a == 0 ? x : y

The following statement prints "I have 1 dog." if num is equal to 1, or
"I have 3 dogs.", if num is 3.

     printf ("I have %d dog%s.\n",num, (num>1) ? "s" : "");



MPE/iX 5.0 Documentation