среда, 2 октября 2013 г.

Преобразование типов в C++

Преобразования типов выполняются, если операнды, входящие в выражения, имеют различные типы. Ниже приведена последовательность преобразований.Более подробно типы данных рассмотрены в статье – Типы данных в 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.
Тип результата тот же, что и тип участвующих в выражении операндов.