Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
rudenko_c_tasks.doc
Скачиваний:
57
Добавлен:
12.11.2019
Размер:
666.62 Кб
Скачать

10.2.3 Арифметические преобразования при выполнении арифметических операций вида X op y

1. если есть операнд типа short или signed char, то он преобразуется к int; если есть операнд типа char, unsigned char или unsigned short, и все значения этого типа могут быть представлены как int, то он преобразуется к int; иначе - к unsigned int. Это преобразование называется «целочисленное расширение» (promoting ).

  1. если после выполнения п.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. после этого выполняется арифметическая операция; тип результата - это тип, к которому были приведены оба операнда.

10.2.4 Арифметические преобразования при выполнении присваивания и явного приведения

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

тип X тип Y тип результата

-------------------------------------------------------------------------------------------------------------

арифметический арифметический тип X

-------------------------------------------------------------------------------------------------------------

указатель, структура тип X тип X

либо объединение

-------------------------------------------------------------------------------------------------------------

указатель на const T указатель на T либо тип X

на const T

-------------------------------------------------------------------------------------------------------------

указатель на volatile T указатель на T либо тип X

на volatile T

-------------------------------------------------------------------------------------------------------------

указатель на const volatile T указатель на T, либо на тип X

const T, либо на volatile T,

либо на const volatile T

-------------------------------------------------------------------------------------------------------------

указатель на void указатель на T тип X

-------------------------------------------------------------------------------------------------------------

указатель на T указатель на void тип X

-------------------------------------------------------------------------------------------------------------

указатель на T целое значение 0 тип X

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]