C Предимство и асоциативност на операторите: определение и примери

В този урок ще научите за предимството и асоциативността на операторите с помощта на примери.

Предимство на операторите

Приоритетът на операторите определя кой оператор се изпълнява първо, ако в даден израз има повече от един оператор.

Нека разгледаме един пример:

 int x = 5 - 17* 6;

В C предимството на *е по-високо от -и =. Следователно, 17 * 6първо се оценява. Тогава изразът, който включва, -се оценява като предимството на -е по-високо от това на =.

Ето таблица на приоритетите на операторите от по-високи към по-ниски. Свойството на асоциативността ще бъде обсъдено скоро.

Таблица за предимство и асоциативност на операторите

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

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

Асоциативността на операторите определя посоката, в която се оценява израз. Например,

 b = a;

Тук стойността на a е присвоена на b, а не обратното. Това е така, защото асоциативността на =оператора е отдясно наляво.

Също така, ако присъстват два оператора от един и същ приоритет (приоритет), асоциативността определя посоката, в която се изпълняват.

Нека разгледаме един пример:

 1 == 2! = 3

Тук, оператори ==и !=имат една и съща предимство. И тяхната асоциативност е отляво надясно. Следователно, 1 == 2се изпълнява първо.

Горният израз е еквивалентен на:

 (1 == 2)! = 3

Забележка: Ако даден оператор има множество оператори, можете да използвате скоби, за ()да направите кода по-четлив.

Интересни статии...