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) |
Примечание
Преобразование плавающих типов Значения типа 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 |