C Preference a asociativita operátorů: Definice a příklady

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ší.

Zajímavé články...