С Пріоритет та асоціативність операторів: визначення та приклади

У цьому посібнику ви дізнаєтесь про перевагу та асоціативність операторів за допомогою прикладів.

Перевага операторів

Пріоритет операторів визначає, який оператор виконується першим, якщо у виразі є більше одного оператора.

Давайте розглянемо приклад:

 int x = 5 - 17* 6;

У C пріоритет *вище, ніж -і =. Отже, 17 * 6оцінюється спочатку. Тоді вираз, що включає -, обчислюється як пріоритет -вище, ніж у =.

Ось таблиця переваги операторів від вищого до нижчого. Властивість асоціативності буде обговорено найближчим часом.

Таблиця переваги та асоціативності операторів

Оператор Значення оператора Асоціативність
()
()
->
.
Функціональний виклик
Посилання на елемент масиву
Непрямий вибір
члена Прямий вибір члена
Зліва направо
!
~
+
-
++
-
&
*
розмір
(тип)
Логічне заперечення
Побітове (1) доповнення
Унарне плюс
Унарне мінус
Збільшення
Дерементування
(Адреса)
Посилання на покажчик
Повертає розмір об'єкта
Typecast (перетворення)
Справа наліво
*
/
%
Помножте
ділити
залишок
Зліва направо
+
-
Двійковий плюс (Додавання)
Двійковий мінус (віднімання)
Зліва направо
<<
>>
Ліва зміна
Права зміна
Зліва направо
<
<=
>
> =
Менше, ніж
менше або рівне
Більше, ніж
більше або рівне
Зліва направо
==
! =
Дорівнює
Не дорівнює
Зліва направо
& Побітове І Зліва направо
^ Побітовий ексклюзив АБО Зліва направо
| Побітове АБО Зліва направо
&& Логічне І Зліва направо
|| Логічне АБО Зліва направо
?: Умовний оператор Справа наліво
=
* =
/ =
% =
+ =
- =
& =
=
| =
<< =
>> =
Просте призначення
Призначити продукт
Призначити фактор
Призначити залишок
Призначити суму
Призначити різницю
Призначити побітове І
Присвоїти побітове XOR
Призначити побітове АБО
Призначити лівий зсув
Призначити правий зсув
Справа наліво
, Розділювач виразів Зліва направо

Асоціативність операторів

Асоціативність операторів визначає напрямок, в якому оцінюється вираз. Наприклад,

 b = a;

Тут значення a присвоюється b, а не навпаки. Це тому, що асоціативність =оператора знаходиться справа наліво.

Крім того, якщо присутні два оператори з однаковим пріоритетом (пріоритетом), асоціативність визначає напрямок, в якому вони виконуються.

Давайте розглянемо приклад:

 1 == 2! = 3

Тут оператори ==і !=мають однаковий пріоритет. І їх асоціативність зліва направо. Отже, 1 == 2виконується першим.

Вираз вище еквівалентний:

 (1 == 2)! = 3

Примітка: Якщо в операторі є кілька операторів, ви можете скористатися дужками, ()щоб зробити код більш читабельним.

Цікаві статті...