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



         

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


/p>

Примечание. В СП MSC и СП ТС тип int

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

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

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

Беззнаковое целое значение преобразуется к короткому беззнаковому целому значению или короткому знаковому целому значению путем усечения старших битов. Беззнаковое целое значение преобразуется к длинному беззнаковому целому значению или длинному знаковому целому значению путем дополнения нулями слева. Беззнаковое целое значение преобразуется к значению с плавающей точкой путем преобразования к типу long, а затем преобразования значения типа long к значению с плавающей точкой.

Если беззнаковое целое значение преобразуется к знаковому целому значению того же размера, то битовое представление не меняется. Однако, если старший (знаковый) бит был установлен в единицу, представляемое значение изменится.

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

Таблица 4.3.

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

От типа

К типу

Метод

unsigned char

char

сохранение битового представления; старший бит становится знаковым

unsigned char

short

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

unsigned char

long

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

unsigned char

unsigned short

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

unsigned char

unsigned long

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

unsigned char

float

дополнение нулевыми битами до long; преобразование long к float

unsigned char

double

дополнение нулевыми битами до long; преобразование long к double

unsigned short

char

сохранение младшего байта

unsigned short

short

сохранение битового представления; старший бит становится знаковым

unsigned short

long

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

unsigned short

unsigned char

сохранение младшего байта

unsigned short

unsigned long

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

unsigned short

float

дополнение нулевыми битами до long; преобразование long к float

unsigned short

double

дополнение нулевыми битами до long; преобразование long к double

unsigned long

char

сохранение младшего байта

unsigned long

short

сохранение младшего слова

unsigned long

long

сохранение битового представления; старший бит становится знаковым

unsigned long

unsigned char

сохранение младшего байта

unsigned long

unsigned short

сохранение младшего слова

unsigned long

float

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

unsigned long

double

преобразование к long; преобразование long к double (в версии 5 СП MSC это преобразование производится напрямую, без промежуточного типа long)

<


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