Программирование на C и C++

Онлайн справочник программиста на C и C++

Преобразование типов в выражениях

Когда переменные и константы различных типов смешиваются в выражениях, то происходит преобразование к одному типу. Компилятор преобразует все операнды «вверх», к типу большего операнда. Ниже описываются правила преобразования типов.

  1. Все переменные типа char и short int преобразуются к типу int. Все переменные типа float преобразуются к типу double.
  2. Если один из пары операндов имеет тип long double, другой операнд также преобразуется к long double.
    Иначе если один из операндов имеет тип double, другой операнд также преобразуется к double.
    Иначе если один из операндов имеет тип long, другой операнд также преобразуется к long,
    Иначе если один из операндов имеет тип unsigned, другой операнд также преобразуется к unsigned.

В результате применения этих правил преобразования каждая пара операндов будет иметь одинаковый тип и результат каждой операции будет совпадать по типу с операндами. Заметим, что второе правило имеет несколько условий, которые должны применяться последовательно. Например, рассмотрим преобразование типов, показанное ниже.

Пример преобразования типов

Сначала символ ch преобразуется к целому, а вещественная переменная с одинарной точностью f преобразуется к double. Затем ch / i преобразуется к double, поскольку f * d имеет тип double. Конечный результат имеет тип double, поскольку оба операнда типа double.