### Examples Using the Conditional Operator

The following expression determines which variable has the greater value, `y` or `z`, and assigns the greater value to the variable `x`.

> `x = (y > z) ? y : z;`

The following is an equivalent statement:

>     if (y > z)
>        x = y;
>     else
>        x = z;

The following expression calls the function `printf`, which receives the value of the variable `c` if `c` evaluates to a digit. Otherwise, `printf` receives the character constant `'x'`.

> `printf(" c = %c\n", isdigit(c) ? c : 'x');`

If the last operand of a conditional expression contains an assignment operator, use parentheses to ensure the expression evaluates properly. For example, the `==` operator has higher precedence than the `?:` operator in the following expression:

> `int i, j, k;
> (i == 7) ? j ++ : k = j;`

This expression generates and error because it is interpreted as if it were parenthesized this way:

> `int i, j, k;
> ((i == 7) ? j ++ : k) = j;`

The value k, and not `k = j`, is treated as the third operand. This error arrises because a conditional expression is not an lvalue, and the assignment is not valid. To make the expression evaluate correctly, enclose the last operand in parenetheses. For example:

> `int i, j, k;
> (i == 7) ? j ++ : (k = j);`

Operator Precedence and Associativity
Expressions and Operators
Types of Expressions
lvalues

Operator Precedence and Associativity Table
Conditional Operator