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