Когда переменные и константы различных типов смешиваются в выражениях, то происходит преобразование к одному типу. Компилятор преобразует все операнды «вверх», к типу большего операнда. Ниже описываются правила преобразования типов.
- Все переменные типа char и short int преобразуются к типу int. Все переменные типа float преобразуются к типу double.
-
Если один из пары операндов имеет тип long double, другой операнд также преобразуется к long double.
Иначе если один из операндов имеет тип double, другой операнд также преобразуется к double.
Иначе если один из операндов имеет тип long, другой операнд также преобразуется к long,
Иначе если один из операндов имеет тип unsigned, другой операнд также преобразуется к unsigned.
В результате применения этих правил преобразования каждая пара операндов будет иметь одинаковый тип и результат каждой операции будет совпадать по типу с операндами. Заметим, что второе правило имеет несколько условий, которые должны применяться последовательно. Например, рассмотрим преобразование типов, показанное ниже.
Сначала символ ch преобразуется к целому, а вещественная переменная с одинарной точностью f преобразуется к double. Затем ch / i преобразуется к double, поскольку f * d имеет тип double. Конечный результат имеет тип double, поскольку оба операнда типа double.