A type expression is a type specification used as an alternative association in a _Generic expression. The form pairs each type with an expression selected when the controlling expression has that type. section 16.6
Use these rules when writing the alternatives:
- Write only unqualified types; array types and function types are not valid type expressions. section 16.6
- Use pointers to qualified types, arrays, or functions when those pointer types are the intended alternatives. section 16.6
- Account for the controlling expression’s function-argument-like type: qualifiers drop, arrays convert to pointers, and functions convert to function pointers. section 16.6
Selecting a type-specific maximum
A MAXVAL macro uses type expressions such as bool, char, signed, unsigned, signed long, and unsigned long long, associating each with its maximum value. The alternatives describe the types that _Generic may select, while the controlling expression determines the match.

