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 * 6sa 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 == 2sa 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ší.








