Язык программирования Си для персонального компьютера | страница 88



Правила преобразования беззнаковых целых типов приведены в таблице 4.3.

Таблица 4.3.

Преобразование беззнаковых целых типов
От типаК типуМетод
unsigned charcharсохранение битового представления; старший бит становится знаковым
unsigned charshortдополнение нулевыми битами
unsigned charlongдополнение нулевыми битами
unsigned charunsigned shortдополнение нулевыми битами
unsigned charunsigned longдополнение нулевыми битами
unsigned charfloatдополнение нулевыми битами до long; преобразование long к float
unsigned chardoubleдополнение нулевыми битами до long; преобразование long к double
unsigned shortcharсохранение младшего байта
unsigned shortshortсохранение битового представления; старший бит становится знаковым
unsigned shortlongдополнение нулевыми битами
unsigned shortunsigned charсохранение младшего байта
unsigned shortunsigned longдополнение нулевыми битами
unsigned shortfloatдополнение нулевыми битами до long; преобразование long к float
unsigned shortdoubleдополнение нулевыми битами до long; преобразование long к double
unsigned longcharсохранение младшего байта
unsigned longshortсохранение младшего слова
unsigned longlong сохранение битового представления; старший бит становится знаковым
unsigned longunsigned charсохранение младшего байта
unsigned longunsigned shortсохранение младшего слова
unsigned longfloatпреобразование к long; преобразование long к float
unsigned longdoubleпреобразование к long; преобразование long к double (в версии 5 СП MSC это преобразование производится напрямую, без промежуточного типа long)

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

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

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