Преобразования по умолчанию
Большинство операций языка Си выполняют преобразование типов для приведения своих операндов к общему типу либо для того, чтобы расширить значения коротких по размеру типов до размера, используемого в машинных операциях. Преобразования, зависящие от конкретной операции и от типа операнда (или операндов), рассмотрены в разделе 4.7. Тем не менее, многие операции выполняют одинаковые преобразования целых и плавающих типов. Эти преобразования называются далее преобразованиями по умолчанию.
Преобразования по умолчанию осуществляются следующим образом:
1) Все операнды типа float
преобразуются к типу double.
2) Только для СП ТС: если один операнд имеет тип long double, то второй операнд также преобразуется к типу long double.
3) Если один операнд имеет тип double, то второй операнд преобразуется к типу double.
4) Если один операнд имеет тип unsigned long, то второй операнд преобразуется к типу unsigned long.
5) Если один операнд имеет тип long, то второй операнд преобразуется к типу long.
6) Если один операнд имеет тип unsigned int, то второй операнд преобразуется к типу unsigned int.
7) Все операнды типов char или short
преобразуются к типу int.
8) Все операнды типов unsigned char или unsigned short преобразуются к типу unsigned int.
9) Иначе оба операнда имеют тип int.