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