Стандартные преобразования

Некоторые операции в зависимости от своих операндов могут вызвать преобразование значения операнда от одного типа к другому.

Стандартные преобразования для целочисленных

Всюду, где требуется целое, можно использовать char, short, причем в знаковом и беззнаковом вариантах. Если int может представлять все значения исходного типа, значение преобразуется к int, иначе оно преобразуется к unsigned int. Это называется стандартным преобразованием для целочисленных.

Целочисленные и числа с плавающей точкой

Преобразование значения с плавающей точкой к целочисленному типу сводится к «усечению», т.е. отбрасыванию дробной части. Результат считается неопределенным, если значение нельзя представить в целочисленном типе.

Преобразования целочисленных значений к значениям с плавающей точкой математически корректны настолько, насколько это позволяет система команд. Может произойти потеря точности, если целочисленное значение нельзя точно представить как значение с плавающей точкой.

Строки и арифметические типы

Преобразование значение любого арифметического типа к строке даёт в результате строковое представление числа.

Преобразование строки к арифметическому типу сводится к попытке интерпретировать значение строки как представление числа. В случае неудачи возникает ошибка времени выполнения.

Строки и массивы символов

Строка преобразуется в массив символов, завершающийся символом '\0'.

Массив символов преобразуется к строке.

Арифметические преобразования

Для большинства операций преобразования операндов и тип результата определяются одними и теми же правилами. Это правило можно назвать «обычными арифметическими преобразованиями».

Если оба операнда строки либо массивы символов, оба операнда преобразуются в string.

Если один из операндов есть double либо float, оба операнда преобразуется в double.

Тогда, если один из операндов есть беззнаковое целое (unsigned long или unsigned int), оба операнда преобразуется в unsigned int.

Иначе, оба операнда преобразуются в int.