V tomto kurzu se dozvíte o přednostech a asociativitě operátorů pomocí příkladů.
Přednost operátorů
Priorita operátorů určuje, který operátor je proveden jako první, pokud je ve výrazu více než jeden operátor.
Uvažujme příklad:
int x = 5 - 17* 6;
V C je priorita *vyšší než -a =. 17 * 6Nejprve se tedy vyhodnotí. Poté je výraz zahrnující -vyhodnocen jako priorita výrazu -vyšší než =.
Zde je tabulka priorit operátorů od vyšších po nižší. Vlastnost asociativity bude brzy diskutována.
Tabulka priorit a asociativity operátorů
| Operátor | Význam operátora | Asociativita |
|---|---|---|
| () () -> . | Funkční volání Odkaz na prvek pole Nepřímý výběr členů Přímý výběr členů | Zleva do prava |
| ! ~ + - ++ - & * sizeof (typ) | Logická negace Bitový (1) doplněk Unární plus Unární mínus Přírůstek Snížení Dereference (adresa) Odkaz na ukazatel Vrací velikost objektu Typecast (převod) | Zprava doleva |
| * / % | Multiply Dělit Zbytek | Zleva do prava |
| + - | Binární plus (sčítání) Binární mínus (odčítání) | Zleva do prava |
| << >> | Levá směna Pravá směna | Zleva do prava |
| < <= > > = | Méně než Méně než nebo rovno Větší než Větší než nebo rovno | Zleva do prava |
| == ! = | Rovná se Nerovná se | Zleva do prava |
| & | Bitové AND | Zleva do prava |
| ^ | Bitově exkluzivní NEBO | Zleva do prava |
| | | Bitové NEBO | Zleva do prava |
| && | Logické AND | Zleva do prava |
| || | Logické NEBO | Zleva do prava |
| ?: | Podmíněný operátor | Zprava doleva |
| = * = / = % = + = - = & = = | = << = >> = | Jednoduché přiřazení Přiřadit produkt Přiřadit kvocient Přiřadit zbytek Přiřadit součet Přiřadit rozdíl Přiřadit bitově AND Přiřadit bitově XOR Přiřadit bitově NEBO Přiřadit levý posun Přiřadit pravý posun | Zprava doleva |
| , | Oddělovač výrazů | Zleva do prava |
Asociativita provozovatelů
Asociativita operátorů určuje směr, ve kterém je výraz vyhodnocen. Například,
b = a;
Zde je hodnota a přiřazena b, a ne naopak. Je to proto, že asociativita =operátora je zprava doleva.
Pokud jsou přítomni dva operátoři stejné priority (priority), asociativita určuje směr, ve kterém se provádějí.
Uvažujme příklad:
1 == 2! = 3
Tady, operátoři ==a !=mají stejnou prioritu. A jejich asociativita je zleva doprava. Proto 1 == 2je proveden jako první.
Výše uvedený výraz je ekvivalentní:
(1 == 2)! = 3
Poznámka: Pokud má příkaz více operátorů, můžete použít čárky (), aby byl kód čitelnější.








