R
Справочное
руководство по С++
R.4.5 Арифметические преобразования.
Для большинства операций преобразования операндов и тип результата
определяются одними и и теми же правилами. Это правило можно назвать
"обычными арифметическими преобразованиями".
- Если один из операндов есть long double, другой операнд
преобразуется в long double.
- Иначе, если один из операндов есть double, другой операнд
преобразуется в double.
- Иначе, если один из операндов есть float, другой операнд
преобразуется в float.
Иначе, если стандартные целочисленные преобразования ($$R.4.1)
происходят над обоими операндами.
- Тогда, если один из операндов есть unsigned long, другой
операнд преобразуется в unsigned long.
- Иначе, если один из операндов есть long int, а другой -
unsigned int, то при условии, что long int может представлять
все возможные значения unsigned int, значение unsigned int
преобразуется в long int, в противном случае оба операнда
преобразуются в unsigned long int.
- Иначе, если один из операндов есть long, другой операнд
преобразуется в long.
- Иначе, если один из операндов есть unsigned, другой операнд
преобразуется в unsigned.
- Иначе, оба операнда должны быть int.