Главная страница
Случайная страница
Разделы сайта
АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатикаИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханикаОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторикаСоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансыХимияЧерчениеЭкологияЭкономикаЭлектроника
|
Преобразование беззнаковых целых типов
От типа
| К типу
| Метод
| 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)
| Примечание. В СП 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, то результат преобразования не определен
|
|