P99

◆ P99_SIGN_PROMOTE

#define P99_SIGN_PROMOTE (   A,
 
)    (1 ? (A) : (B))

Compute expression A and apply integer promotion rules under the constraint of expression B.

Expression A is evaluated exactly once. Expression B is only used for its type and never evaluated.

The result can always be determined at compile time, if A can be determined then, regardless of the actual value of B. But it is only a constant expression in the strict sense of C99 if both A and B are so.

Warning
Due to the integer promotion rules the resulting expression has a width that is at least that of int, even if A and B have smaller width than that.

Definition at line 441 of file p99_int.h.