русс | укр

C# - Главная
Контакты
Задайте вопрос...
Просмотр всех вопросов


Пространство имен
  ► System
  ► Microsoft


Для учеников (начинающих)
  ► Видео уроки
  ► Обучение
  ► Примеры программ
  ► Секреты в Си Шарп

Для профессионалов
  ► Обучение
  ► Примеры программ
  ► Задачки - для тебя!










Приоритеты операторов

Приведем простой пример.

Пусть нам нужно вычислить значение переменной х после выполнения следующей строки кода:

int х = 2 + 3 * 4;

Если вычислять это выражение слева направо, то сначала нужно сложить числа 2 и 3, а затем результат умножить на 4. После подобных вычислений значение переменной х будет равно 20.

Если же вычислять это выражение справа налево, то сначала нужно умножить 3 на 4, а затем к результату добавить 2. При этом в переменную х будет записано значение 14.

Чтобы избежать неоднозначности, все операторы в языке С# (как, впрочем, и в других языках программирования) имеют свой приоритет. Более приоритетные операторы выполняются в первую очередь.

В приведенном выше примере оператор умножения имеет высший приоритет по сравнению с оператором сложения, поэтому в результате вычисления получится значение 14.

При необходимости мы можем задать порядок вычислений в составных выражениях подобного рода при помощи скобок, например:

int х = (2 + 3) * 4;

Здесь мы сообщаем компилятору, что вначале нужно сложить числа 2 и 3, а затем умножить полученный результат на 4.

Для наглядности рекомендуется в сложных выражениях всегда задавать порядок выполнения операций явным образом. Это поможет избежать ошибок, связанных с неправильной оценкой приоритетов операторов.

В таблице 4.4 приведена полная таблица приоритетов операторов С#.

Таблица 4.4 - Приоритеты операторов

Операторы Категория
х.у f(x) a[x] х ++ х-- new typeof checked unchecked Простые операторы
+ - ! ~ ++x --x (T)x Унарные операторы
* / % Операторы умножения и деления
+ - Аддитивные операторы
<< >> Операторы сдвига
< > <= >= is as Операторы отношения и проверки типа
= = != Операторы равенства и неравенства
& Поразрядный оператор И
^ Поразрядный оператор ИСКЛЮЧАЮЩЕЕ ИЛИ
| Поразрядный оператор ИЛИ
&& Логический оператор И
|| Логический оператор ИЛИ
?: Оператор условия
= *= /= %= += -= <<= >>= &= ^= |= Операторы присваивания

Как видите, по приоритету вначале выполняются простые операторы, затем унарные, после них — операторы умножения и деления, затем — сложения и сдвига. Операторы отношения, равенства и неравенства, а также логические операторы имеют низкий приоритет. Но самый низкий приоритет отдается операторам присваивания (простым и составным).

 

Просмотров: 1563






© 2012 ci-sharp.ru При использовании материала прямая индексирующая ссылка на сайт ОБЯЗАТЕЛЬНА.
Права строго защищены нормами международного права, интеллектуальной собственности и авторского права.