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