C Prednosť a asociatívnosť operátorov: Definícia a príklady

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

Zaujímavé články...