|
Программирование >> Обработка исключительных ситуаций
продолжение & Таблица 3.1 (продолжение) Категория Знак операции Название Описани< Вычитание с присваиванием = Сдвиг влево с присваиванием = Сдвиг вправо с присваиванием & Поразрядное И с присваиванием Поразрядное исключающее ИЛИ с присваиванием Поразрядное ИЛИ с присваиванием ПРИМЕЧАНИЕ- В версию С# 2.0 введена операция объединения ??, которая рассматривается в г: ве 13 (см. раздел Обнуляемые типы , с. 309). Операции в выражении выполняются в определенном порядке в соответств] с приоритетами, как и в математике. В табл. 3.1 операции расположены по уб; ванию приоритетов, уровни приоритетов разделены в таблице горизонтальны? линиями. Результат вычисления выражения характеризуется значением и типом. Напр мер, пусть а и b - переменные целого типа и описаны так: int а = 2, b = 5; Тогда выражение а + b имеет значение 7 и тип i nt, а выражение а = b имеет знач ние, равное помещенному в переменную а (в данному случае - 5), и тип, совп дающий с типом этой переменной. Если в одном выражении соседствуют несколько операций одинакового пр оритета, операции присваивания и условная операция выполняются спра налево, остальные - слева направо. Для изменения порядка выполнения on раций используются круглые скобки, уровень их вложенности практически ограничен. Например, а + b + с означает (а + Ь) + с, а а = b = с означает а = (Ь = с). То ее сначала вычисляется выражение b = с, а затем его результат становится правь операндом для операции присваивания переменной а. ПРИМЕЧАНИЕ- Часто перед выполнением операции требуется вычислить значения операнде Например, в выражении F(i) + G(i + + ) * H(i) сначала вызываются функции F и Н, а затем выполняются умножение и сложение. Операнды всегда вычисляют слева направо независимо от приоритетов операций, в которых они участвуя Кстати, в приведенном примере метод Н вызывается с новым значением i (увел ченным на 1). Тип результата выражения в общем случае формируется по правилам, котор! описаны в следующем разделе. 1реобразования встроенных арифметических ипов-значений [ри вычислении выражений может возникнуть необходимость в преобразовании япов. Если операнды, входящие в выражение, одного типа и операция для этого шпа определена, то результат выражения будет иметь тот же тип. ели операнды разного типа и/или операция для этого типа не определена, пе-ед вычислениями автоматически выполняется преобразование типа по прави-ам, обеспечивающим приведение более коротких типов к более длинным для охранения значимости и точности. Автоматическое (неявное) преобразование озможно не всегда, а только если при этом не может случиться потеря значимости. ;сли неявного преобразования из одного типа в другой не существует, програм-ист может задать явное преобразование типа с помощью операции (тип)х. Его езультат остается на совести программиста. Явное преобразование рассматри-ается в этой главе немного позже. НИМАНИЕ- Арифметические операции не определены для более коротких, чем i nt, типов. Это означает, что если в выражении участвуют только величины типов sbyte, byte, short и ushort, перед выполнением операции они будут преобразованы в i nt. Таким образом, результат любой арифметической операции имеет тип не менее int. [равила неявного преобразования иллюстрирует рис. 3.1. Если один из операн-ов имеет тип, изображенный на более низком уровне, чем другой, то он приво-ится к типу второго операнда при наличии пути между ними. Если пути нет, озникает ошибка компиляции. Если путей несколько, выбирается наиболее ко-откий, не содержащий пунктирных линий. Преобразование выполняется не по-ледовательно, а непосредственно из исходного типа в результирующий. double [ float decimal ] long ulong Рис. 3.1. Неявные арифметические преобразования типов
|
© 2006 - 2024 pmbk.ru. Генерация страницы: 0
При копировании материалов приветствуются ссылки. |