Справочник языка Cи



         

Преобразования типов при присваивании - часть 3


/p>

Примечание. В СП MSC и СП ТС тип unsigned int эквивалентен типу unsigned short и преобразование для типа unsigned int

производится как для типа unsigned short. В некоторых реализациях языка Си тип unsigned int эквивалентен типу unsigned

long и преобразование для типа int

производится как для типа unsigned long.

Преобразование плавающих типов Значения типа float

преобразуются к типу double без потери точности. Значения типа double при преобразовании к типу float представляются с некоторой потерей точности. Однако если порядок значения типа double слишком велик для представления экспонентой

значения типа float, то происходит потеря значимости, о чем сообщается во время выполнения.

Значения с плавающей точкой преобразуются к целым типам в два приема: сначала производится преобразование к типу long, а затем преобразование этого значения типа long к требуемому типу. Дробная часть плавающего значения отбрасывается при преобразовании к long; если полученное значение слишком велико для типа long, то результат преобразования не определен. Правила преобразования плавающих типов приведены в таблице 4.4.

Таблица 4.4.

От типа

К типу

Метод

float

char

преобразование к long; преобразование long к char

float

short

преобразование к long; преобразование long к short

float

long

усечение дробной части; результат не определен, если он слишком велик для представления типом long

float

unsigned short

преобразование к long; преобразование long к unsigned short

float

unsigned long

преобразование к long; преобразование long к unsigned long

float

double

дополнение мантиссы нулевыми битами справа

double

char

преобразование к float; преобразование float к char

double

short

преобразование к float; преобразование float к short

double

long

усечение дробной части; результат не определен, если он слишком велик для представления типом long

double

unsigned short

преобразование к long; преобразование long к unsigned short

double

unsigned long

преобразование к long; преобразование long к unsigned long

double

float

усечение младших битов мантиссы; возможна потеря точности; если значение слишком велико для представления типом float, то результат преобразования не определен

<


Содержание  Назад  Вперед