Студопедия

Главная страница Случайная страница

Разделы сайта

АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатикаИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханикаОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторикаСоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансыХимияЧерчениеЭкологияЭкономикаЭлектроника






Старшинство операторів






Оператори

Оператор — це символ, вказуючий операцію, що виконується над одним або декількома аргументами. При виконанні оператора виходить результат. Синтаксис застосування операторів декілька відмінний від виклику методів, і формат виразів, що містять операторів в С#, ви повинні знати як свої п'ять пальців. Як і в більшості інших мов, семантика операторів в С# відповідає правилам і нотаціям, знайомим нам з шкільної лави. Базові оператори в С# включають множення (*), ділення (/), складання (+), віднімання (—), модуль (%) і привласнення (=).

Оператори служать для того, щоб набути нового значення із значень, над якими проводиться операція. Ці початкові значення називаються операндами. Результат операції повинен бути збережений в пам'яті. Іноді він зберігається в змінній, що містить один з початкових операндів. Компілятор С# генерує повідомлення про помилку, якщо при використанні оператора не визначається або не зберігається нове значення. Приведений нижче код значень не міняє. Компілятор видасть повідомлення про помилку, оскільки арифметичний вираз, що не приводить до зміни хоч одного значення, зазвичай розглядається як помилкове.

 

class NoResultApp

{

public static void Main()

{

int i; int j;

i + j; // Помилка, оскільки результат нічому не привласнюється. } >

 

Більшість операторів працюють тільки з числовими типами даних, такими як Byte, Short, Long, Integer, Single, Double і Decimal. Виключення — оператори порівняння (== і! =). Крім того, в С# можна застосовувати операторів + і — для класу String і навіть застосовувати операторів інкремента (++) і (—) для таких незвичайних мовних конструкцій як делегати.

Старшинство операторів

Коли в одному виразі декілька операторів, компілятор повинен визначити порядок їх виконання. При цьому компілятор керується правилами, які називаються старшинством операторів. Розуміння старшинства операторів потрібне для правильного написання виразів — іноді результат може не відповідати очікуваному.

Розглянемо вираз 42 + 6 * 10. Якщо скласти 42 і 6, а потім суму помножити на 10, вийде 480. Якщо ж помножити 6 на 10 і до результату додати 42, вийде 102. При компіляції коду спеціальний компонент компілятора — лексичний аналізатор — відповідає за порядок читання цього коду. Саме лексичний аналізатор визначає відносне старшинство різнорідних операторів в одному виразі. Для цього він використовує деяке значення — пріоритет — кожного підтримуваного оператора. Пріоритетніші оператори вирішуються в першу чергу. У нашому прикладі оператор * має старшинство над оператором +, оскільки * поглинає (зараз поясню цей термін) свої операнди до того, як це зробить +. Пояснення криється в загальних арифметичних правилах: множення і ділення завжди мають вищий пріоритет, ніж складання і віднімання. Повернемося наприклад: говорять, що число 6 поглинено оператором * і в 42 + 6 * 10 і в 42 * 6 + 10, так що ці вирази еквівалентні 42 + (6 * 10) і (42 * 6) + 10.

Як старшинство визначається в С#

Тепер подивимося, як старшинство операторів визначається в С#. Нижче оператори перераховані в порядку спадання пріоритету (табл. 1).

Табл. 7.1. Старшинство операторів в С#.

Категорія оператора Оператори
Простий (х), х.у, f(x), а, х++, х —, new, typeof, sizeof, checked, unchecked
Унарний +, -!, ++x, — х, (Т) х
Мультиплікативний *, /, %
Аддитивний +, -
Зрушення «,»
Відношення <, >, < =, > =, is
Рівність ==
Логічне І (AND) &
Що логічне виключає АБО (XOR) ^
Логічне АБО (OR) |
Умовне І (AND) & &
Умовне НУЛІ (OR) II
Умова 9-
Привласнення = *= /= % =, + =, -= «=,» =, & =, ^ =, =





© 2023 :: MyLektsii.ru :: Мои Лекции
Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав.
Копирование текстов разрешено только с указанием индексируемой ссылки на источник.