У овом упутству ћете научити о предности и асоцијативности оператора помоћу примера.
Предност оператора
Приоритет оператора одређује који се оператор извршава први ако у изразу постоји више од једног оператора.
Размотримо пример:
int x = 5 - 17* 6;
У Ц је приоритет *
већи од -
и =
. Дакле, 17 * 6
прво се оцењује. Тада се израз који -
се укључује вреднује као приоритет од -
већи од израза =
.
Ево табеле приоритета оператора од вишег према нижем. О својству асоцијативности биће речи ускоро.
Табела првенства оператора и асоцијативности
Оператор | Значење оператора | Асоцијативност |
---|---|---|
() () -> . | Функционални позив Референца елемента низа Индиректни избор члана Директни избор члана | С лева надесно |
! ~ + - ++ - & * сизеоф (тип) | Логичка негација Допунски битовни (1) додаци Унари плус Унари минус Инцремент Децремент Дереференце (Аддресс) Референца показивача Враћа величину објекта Типецаст (конверзија) | Десна на лево |
* / % | Премножи подељени остатак | С лева надесно |
+ - | Бинарни плус (Сабирање) Бинарни минус (одузимање) | С лева надесно |
<< >> | Лева смена Десна смена | С лева надесно |
< <= > > = | Мање од мање од или једнако Веће од веће или једнако | С лева надесно |
== ! = | Једнако са Не једнако са | С лева надесно |
& | У битовима И. | С лева надесно |
^ | Битно ексклузивно ИЛИ | С лева надесно |
|. | | У битовима ИЛИ | С лева надесно |
&& | Логично И | С лева надесно |
|| | Логично ИЛИ | С лева надесно |
?: | Условни оператер | Десна на лево |
= * = / = % = + = - = & = = | = << = >> = | Једноставан задатак Додела производ Додела количник Додела остатак Додела сума Додела разлика Додела битовима И Додела битовима ЛОЛ Додела битовима ИЛИ Додела лево смена Додела десно померање | Десна на лево |
, | Сепаратор израза | С лева надесно |
Асоцијативност оператора
Асоцијативност оператора одређује правац у коме се вреднује израз. На пример,
b = a;
Овде је вредност а додељена б, а не обрнуто. То је зато што је асоцијативност =
оператора здесна налево.
Такође, ако су присутна два оператора истог приоритета (приоритета), асоцијативност одређује правац у којем се извршавају.
Размотримо пример:
1 == 2! = 3
Ево, оператери ==
и !=
имају исти приоритет. А, њихова асоцијативност је слева надесно. Дакле, 1 == 2
прво се извршава.
Горњи израз је еквивалентан:
(1 == 2)! = 3
Напомена: Ако израз има више оператора, можете користити заграде ()
како бисте код учинили читљивијим.