Previous: Operand Promotions, Up: Type Conversions [Contents][Index]
Arithmetic binary operators (except the shift operators) convert their operands to the common type before operating on them. Conditional expressions also convert the two possible results to their common type. Here are the rules for determining the common type.
If one of the numbers has a floating-point type and the other is an integer, the common type is that floating-point type. For instance,
5.6 * 2 ⇒ 11.2 /* a double
value */
If both are floating point, the type with the larger range is the common type.
If both are integers but of different widths, the common type is the wider of the two.
If they are integer types of the same width, the common type is
unsigned if either operand is unsigned, and it’s long
if either
operand is long
. It’s long long
if either operand is
long long
.
These rules apply to addition, subtraction, multiplication, division, remainder, comparisons, and bitwise operations. They also apply to the two branches of a conditional expression, and to the arithmetic done in a modifying assignment operation.