Читайте также: |
|
1. если есть операнд типа short или signed char, то он преобразуется к int; если есть операнд типа char, unsigned char или unsigned short, и все значения этого типа могут быть представлены как int, то он преобразуется к int; иначе - к unsigned int. Это преобразование называется «целочисленное расширение» (promoting).
2. если после выполнения п.1 операнды имеют различные типы, то осуществляется их приведение к общему типу. Общим для двух типов (кроме случая «unsigned int - long») является тот, который расположен позже в последовательности int, unsigned int, long, unsigned long, float, double, long double.
Если операнды имеют типы unsigned int и long, и все значения типа unsigned int могут быть представлены как long, то общим типом является long; иначе - unsigned long. Это преобразование называют «согласование типов» (balansing).
3. после этого выполняется арифметическая операция; тип результата - это тип, к которому были приведены оба операнда.
Арифметические преобразования при выполнении присваивания и явного приведения
M-битового представления величины X к N-битовому представлению
преобразование N < M N == M N>M
-------------------------------------------------------------------------------------------------------
знаковое целое отсечение значение значение
к старших сохраняется сохраняется
знаковому целому N-M бит
-------------------------------------------------------------------------------------------------------------
беззнаковое целое зависит от если x ³0,знач.сохр. значение
к реализации иначе зависит от сохраняется
знаковому целому реализации
-------------------------------------------------------------------------------------------------------------
вещественное если |x|<2N-1,то если |x|<2N-1,то если |x|<2N-1,то
к trunc(x) trunc(x) trunc(x)
знаковому целому иначе зависит иначе зависит иначе зависит
от реализации от реализации от реализации
------------------------------------------------------------------------------------------------------------
знаковое целое если x³0, то x%2N если x³0 если x³0
к иначе зависит знач. сохр. знач. сохр.
беззнаковому целому от реализации иначе x+2N иначе x+2N
-------------------------------------------------------------------------------------------------------------
беззнаковое целое значение значение
к x%2N сохраняется сохраняется
беззнаковому целому
------------------------------------------------------------------------------------------------------------
вещественное если 0£x<2N если 0£x<2N если 0£x<2N
к trunc(x) trunc(x) trunc(x)
беззнаковому иначе зависит иначе зависит иначе зависит
целому от реализации от реализации от реализации
------------------------------------------------------------------------------------------------------------
знаковое целое сохр. знак, значение значение
к сохр. старшие сохраняется сохраняется
вещественному N-1 бит
------------------------------------------------------------------------------------------------------------
беззнаковое целое знак +, знак +, значение
к сохр. старшие сохр. старшие сохраняется
вещественному N-1 бит N-1 бит
------------------------------------------------------------------------------------------------------------
вещественное сохр. старшие значение значение
к N-1 бит сохраняется сохраняется
вещественному
10.2.5 Неявное приведение типов в операторе присваивания X = Y
Дата добавления: 2015-11-14; просмотров: 75 | Нарушение авторских прав
<== предыдущая страница | | | следующая страница ==> |
Функции проверки класса литер | | | Базисные средства ввода-вывода |