У цьому посібнику ви дізнаєтесь про перевагу та асоціативність операторів за допомогою прикладів.
Перевага операторів
Пріоритет операторів визначає, який оператор виконується першим, якщо у виразі є більше одного оператора.
Давайте розглянемо приклад:
int x = 5 - 17* 6;
У C пріоритет *
вище, ніж -
і =
. Отже, 17 * 6
оцінюється спочатку. Тоді вираз, що включає -
, обчислюється як пріоритет -
вище, ніж у =
.
Ось таблиця переваги операторів від вищого до нижчого. Властивість асоціативності буде обговорено найближчим часом.
Таблиця переваги та асоціативності операторів
Оператор | Значення оператора | Асоціативність |
---|---|---|
() () -> . | Функціональний виклик Посилання на елемент масиву Непрямий вибір члена Прямий вибір члена | Зліва направо |
! ~ + - ++ - & * розмір (тип) | Логічне заперечення Побітове (1) доповнення Унарне плюс Унарне мінус Збільшення Дерементування (Адреса) Посилання на покажчик Повертає розмір об'єкта Typecast (перетворення) | Справа наліво |
* / % | Помножте ділити залишок | Зліва направо |
+ - | Двійковий плюс (Додавання) Двійковий мінус (віднімання) | Зліва направо |
<< >> | Ліва зміна Права зміна | Зліва направо |
< <= > > = | Менше, ніж менше або рівне Більше, ніж більше або рівне | Зліва направо |
== ! = | Дорівнює Не дорівнює | Зліва направо |
& | Побітове І | Зліва направо |
^ | Побітовий ексклюзив АБО | Зліва направо |
| | Побітове АБО | Зліва направо |
&& | Логічне І | Зліва направо |
|| | Логічне АБО | Зліва направо |
?: | Умовний оператор | Справа наліво |
= * = / = % = + = - = & = = | = << = >> = | Просте призначення Призначити продукт Призначити фактор Призначити залишок Призначити суму Призначити різницю Призначити побітове І Присвоїти побітове XOR Призначити побітове АБО Призначити лівий зсув Призначити правий зсув | Справа наліво |
, | Розділювач виразів | Зліва направо |
Асоціативність операторів
Асоціативність операторів визначає напрямок, в якому оцінюється вираз. Наприклад,
b = a;
Тут значення a присвоюється b, а не навпаки. Це тому, що асоціативність =
оператора знаходиться справа наліво.
Крім того, якщо присутні два оператори з однаковим пріоритетом (пріоритетом), асоціативність визначає напрямок, в якому вони виконуються.
Давайте розглянемо приклад:
1 == 2! = 3
Тут оператори ==
і !=
мають однаковий пріоритет. І їх асоціативність зліва направо. Отже, 1 == 2
виконується першим.
Вираз вище еквівалентний:
(1 == 2)! = 3
Примітка: Якщо в операторі є кілька операторів, ви можете скористатися дужками, ()
щоб зробити код більш читабельним.