Преобразования типов выполняются, если операнды, входящие в выражения, имеют различные типы. Ниже приведена последовательность преобразований.
Более подробно типы данных рассмотрены в статье – Типы данных в C++.
Любые операнды типа char, unsigned char или short преобразуются к типу int по правилам:
- char расширяется нулем или знаком в зависимости от умолчания для char;
- unsigned char расширяется нулем;
- signed char расширяется знаком;
- short, unsigned short и enum при преобразовании не изменяются.
- Затем любые два операнда становятся либо int, либо float, double или long double.
Преобразование других типов данных осуществляется следующим образом:
- Если один из операндов имеет тип long double, то другой преобразуется к типу long double.
- Если один из операндов имеет тип double, то другой преобразуется к типу double.
- Если один из операндов имеет тип float, то другой преобразуется к типу float.
- Иначе, если один из операндов имеет тип unsigned long, то другой преобразуется к типу unsigned long.
- Иначе, если один из операндов имеет тип long, то другой преобразуется к типу long.
- Иначе, если один из операндов имеет тип unsigned, то другой преобразуется к типу unsigned.
- Иначе оба операнда должны иметь тип int.
Тип результата тот же, что и тип участвующих в выражении операндов.
По материалам книги Т.А. Павловской «C++. Программирование на языке высокого уровня»