V tomto výučbe sa pomocou príkladov dozviete o prednosti a asociatívnosti operátorov.
Prednosť operátorov
Prednosť operátorov určuje, ktorý operátor sa vykoná ako prvý, ak je vo výraze viac ako jeden operátor.
Pozrime sa na príklad:
int x = 5 - 17* 6;
V C je prednosť pred *
vyššia ako -
a =
. Preto 17 * 6
sa hodnotí ako prvý. Potom sa výraz zahŕňajúci -
vyhodnotí ako priorita výrazu -
vyšší ako výraz =
.
Tu je tabuľka priorít operátorov od vyššej po nižšiu. O vlastnosti asociativity sa bude čoskoro diskutovať.
Tabuľka precedensov a asociatívnosti operátorov
Prevádzkovateľ | Význam operátora | Asociatívnosť |
---|---|---|
() () -> . | Funkčné volanie Odkaz na prvok poľa Nepriamy výber člena Priamy výber člena | Zľava doprava |
! ~ + - ++ - & * sizeof (typ) | Logická negácia Bitový (1) doplnok Unárne plus Unárne mínus Prírastok Zníženie Dereferencia (adresa) Odkaz na ukazovateľ Vráti veľkosť objektu Typecast (prevod) | Zprava doľava |
* / % | Znásobte rozdelenie zvyšku | Zľava doprava |
+ - | Binárne plus (sčítanie) Binárne mínus (odčítanie) | Zľava doprava |
<< >> | Ľavá zmena Pravá zmena | Zľava doprava |
< <= > > = | Menej ako menšie alebo rovné Väčšie ako väčšie alebo rovné | Zľava doprava |
== ! = | Rovná sa Nerovná sa | Zľava doprava |
& | Bitové AND | Zľava doprava |
^ | Bitové exkluzívne ALEBO | Zľava doprava |
| | Bitové ALEBO | Zľava doprava |
&& | Logické AND | Zľava doprava |
|| | Logické ALEBO | Zľava doprava |
?: | Podmienený operátor | Zprava doľava |
= * = / = % = + = - = & = = | = << = >> = | Jednoduché priradenie Priradiť produkt Priradiť kvocient Priradiť zvyšok Priradiť súčet Priradiť rozdiel Priradiť bitovo AND Priradiť bitovo XOR Priradiť bitovo OR Priradiť ľavý posun Priradiť pravý posun | Zprava doľava |
, | Oddeľovač výrazov | Zľava doprava |
Asociatívnosť operátorov
Asociativita operátorov určuje smer, v ktorom je výraz vyhodnotený. Napríklad,
b = a;
Tu je hodnota a priradená k b, a nie naopak. Je to tak preto, lebo asociatívnosť =
operátora je sprava doľava.
Ak sú prítomní aj dvaja operátori s rovnakou prioritou (prioritou), asociativita určuje smer ich vykonania.
Pozrime sa na príklad:
1 == 2! = 3
Tu, prevádzkovatelia ==
a !=
majú rovnakú prednosť. A ich asociativita je zľava doprava. Preto 1 == 2
sa vykoná ako prvý.
Vyššie uvedený výraz je ekvivalentný s:
(1 == 2)! = 3
Poznámka: Ak má príkaz viac operátorov, môžete použiť zátvorky ()
, aby bol kód čitateľnejší.