In C, a conditional expression is not an lvalue, nor is its result.
| Type of one operand | Type of other operand | Type of result |
|---|---|---|
| Arithmetic | Arithmetic | Arithmetic type after usual arithmetic conversions |
| Structure or union type | Compatible structure or union type | Structure or union type with all the qualifiers on both operands |
| void | void | void |
| Pointer to compatible type | Pointer to compatible type | Pointer to type with all the qualifiers specified for the type |
| Pointer to type | NULL pointer (the constant 0) | Pointer to type |
| Pointer to object or incomplete type | Pointer to void | Pointer to void with all the qualifiers specified for the type |