Программирование >>  Обработка исключительных ситуаций 

1 ... 10 11 12 [ 13 ] 14 15 16 ... 142


тегория

Знак операции

Название

Описание

арные

Унарный плюс

Унарный минус

С. 48

(арифметическое отрицание)

Логическое отрицание

С. 48

Поразрядное отрицание

С. 48

+ +Х

Префиксный инкремент

С. 47

Префиксный декремент

С. 47

(тип)х

Преобразование типа

С. 49

льтипликативные

Умножение

С. 50

та умножения)

Деление

С. 50

Остаток от деления

С. 50

щитивные (типа

Сложение

ожения)

Вычитание

С. 53

Сбита

Сдвиг влево

С. 54

Сдвиг вправо

С. 54

гношения

<

Меньше

С. 54

проверки тина

>

Больше

С. 54

<=

Меньше или равно

С. 54

>=

Больше или равно

С. 54

Проверка принадлежности типу

С. 194

Приведение типа

С. 194

роверки на

Равно

С. 54

[венство

Не равно

С. 54

оразрядные

&

Поразрядная конъюнкция (И)

С. 55

)гические

Поразрядное исключающее ИЛИ

С. 55

Поразрядная дизъюнкция (ИЛИ)

С. 55

словные логические

&&

Логическое И

С. 56

Логическое ИЛИ

С. 56

словная

Условная операция

С. 56

рисваивания

Присваивание

С. 56

Умножение с присваиванием

Деление с присваиванием

Остаток отделения с присваиванием

Сложение с присваиванием

продолжение

&



Таблица 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. Неявные арифметические преобразования типов



1 ... 10 11 12 [ 13 ] 14 15 16 ... 142

© 2006 - 2024 pmbk.ru. Генерация страницы: 0
При копировании материалов приветствуются ссылки.
Яндекс.Метрика