9 Many binary operators that expect operands of arithmetic or enumeration type cause conversions and yield result types
in a similar way. The purpose is to yield a common type, which is also the type of the result. This pattern is called the
usual arithmetic conversions, which are defined as follows:
— If either operand is of type long double, the other shall be converted to long double.
— Otherwise, if either operand is double, the other shall be converted to double.
— Otherwise, if either operand is float, the other shall be converted to float.
— Otherwise, the integral promotions (4.5) shall be performed on both operands.59)
— Then if either operand is unsigned long long int, the other shall be converted to unsigned long long int.
— Otherwise, if one operand is long long int and the other unsigned long int or unsigned int, then if a
long long int can represent all the values of the unsigned operand type, the unsigned operand shall be converted
to long long int; otherwise both operands shall be converted to unsigned long long int.
— Otherwise, if either operand is long long int, the other shall be converted to long long int.
— Otherwise, if either operand is unsigned long the other shall be converted to unsigned long.
— Otherwise, if one operand is a long int and the other unsigned int, then if a long int can represent all the
values of an unsigned int, the unsigned int shall be converted to a long int otherwise both operands shall
be converted to unsigned long int.
— Otherwise, if either operand is long, the other shall be converted to long.
— Otherwise, if either operand is unsigned, the other shall be converted to unsigned.
[ Note: otherwise, the only remaining case is that both operands are int —end note ]
Partager