Язык программирования Си для персонального компьютера | страница 87
Таблица 4.2.
От типа | К типу | Метод |
char | short | дополнение знаком |
char | long | дополнение знаком |
char | unsigned char | сохранение битового представления; |
char | unsigned short | старший бит теряет функцию знакового бита дополнение знаком до short; преобразование short в unsigned short |
char | unsigned long | дополнение знаком до long; преобразование long в unsigned long |
char | float | дополнение знаком до long; преобразование long к float |
char | double | дополнение знаком до long; преобразование long к double |
short | char | сохранение младшего байта |
short | long | дополнение знаком |
short | unsigned char | сохранение младшего байта |
short | unsigned short | сохранение битового представления; старший бит теряет функцию знакового бита |
short | unsigned long | дополнение знаком до long; преобразование long в unsigned long |
short | float | дополнение знаком до long; преобразование long к float |
short | double | дополнение знаком до long; преобразование long к double |
long | char | сохранение младшего байта |
long | short | сохранение младшего слова |
long | unsigned char | сохранение младшего байта |
long | unsigned short | сохранение младшего слова |
long | unsigned long | сохранение битового представления; старший бит теряет функцию знакового бита |
long | float | представляется как float; возможна некоторая потеря точности |
long | double | представляется как double; возможна некоторая потеря точности |
Примечание. В СП MSC и СП ТС тип int эквивалентен типу short и преобразование для типа int производится как для типа short. В некоторых реализациях языка Си тип int эквивалентен типу long и преобразование для типа int производится как для типа long.
Беззнаковое целое значение преобразуется к короткому беззнаковому целому значению или короткому знаковому целому значению путем усечения старших битов. Беззнаковое целое значение преобразуется к длинному беззнаковому целому значению или длинному знаковому целому значению путем дополнения нулями слева. Беззнаковое целое значение преобразуется к значению с плавающей точкой путем преобразования к типу long, а затем преобразования значения типа long к значению с плавающей точкой.
Если беззнаковое целое значение преобразуется к знаковому целому значению того же размера, то битовое представление не меняется. Однако, если старший (знаковый) бит был установлен в единицу, представляемое значение изменится.
Правила преобразования беззнаковых целых типов приведены в таблице 4.3.