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








