Ebben az oktatóanyagban példák segítségével megismerheti az operátorok elsőbbségét és asszociativitását.
Az üzemeltetők elsőbbsége
Az operátorok elsőbbsége meghatározza, hogy melyik operátort hajtják végre először, ha egy kifejezésben egynél több operátor van.
Vegyünk egy példát:
int x = 5 - 17* 6;
C-ben a fontossági sorrend *
magasabb, mint a -
és =
. Ezért 17 * 6
először értékelik. Ezután az érintett kifejezést -
úgy értékelik, hogy a fontossági sorrendje -
magasabb, mint a =
.
Itt van egy táblázat az operátorok elsőbbségéről a magasabb és az alacsonyabb között. Az asszociativitás tulajdonsága hamarosan megvitatásra kerül.
Operátorok elsőbbségi és asszociativitási táblázata
Operátor | Az operátor jelentése | Asszociativitás |
---|---|---|
() () -> . | Funkcionális hívás Tömb elem hivatkozás Közvetett tag kiválasztás Közvetlen tag kiválasztás | Balról jobbra |
! ~ + - ++ - & * méret (típus) | Logikai tagadás Bitorientált (1 „s) kiegészítik Egyoperandusú plusz Egyoperandusú mínusz Increment Decrement dereference (Cím) Pointer hivatkozási méretével tér vissza egy tárgy typecast (konverzió) | Jobbról balra |
* / % | Többszörös osztás maradék | Balról jobbra |
+ - | Bináris plusz (összeadás) Bináris mínusz (kivonás) | Balról jobbra |
<< >> | Bal váltás Jobb váltás | Balról jobbra |
< <= > > = | Kevesebb, mint Kevesebb vagy egyenlő Nagyobb, mint Nagyobb vagy egyenlő | Balról jobbra |
== ! = | Egyenlő: Nem egyenlő | Balról jobbra |
& | Bitenkénti ÉS | Balról jobbra |
^ | Bitenként exkluzív VAGY | Balról jobbra |
| | Bitenként VAGY | Balról jobbra |
&& | Logikai ÉS | Balról jobbra |
|| | Logikai VAGY | Balról jobbra |
?: | Feltételes üzemeltető | Jobbról balra |
= * = / = % = + = - = & = = | = << = >> = | Egyszerű hozzárendelés Termék hozzárendelése hányados hozzárendelése maradék hozzárendelése Összeg hozzárendelése Hozzárendelés különbség hozzárendelése bitenként ÉS hozzárendelése bitenként XOR hozzárendelése bitenként VAGY bal oldali eltolása hozzárendelése jobb oldali eltolása hozzárendelése | Jobbról balra |
, | A kifejezések elválasztója | Balról jobbra |
Az üzemeltetők asszociativitása
Az operátorok asszociativitása határozza meg a kifejezés kiértékelésének irányát. Például,
b = a;
Itt az a értéke b-hez van rendelve, és nem fordítva. Ez azért van, mert az =
operátor asszociativitása jobbról balra történik.
Továbbá, ha két azonos prioritású (prioritású) operátor van jelen, az asszociativitás határozza meg az irányt, amelyben végrehajtják.
Vegyünk egy példát:
1 == 2! = 3
Itt operátorok ==
és !=
ugyanolyan elsőbbséggel rendelkeznek. És asszociativitásuk balról jobbra halad. Ezért 1 == 2
először végrehajtják.
A fenti kifejezés ekvivalens:
(1 == 2)! = 3
Megjegyzés: Ha egy utasításnak több operátora van, zárójelek ()
segítségével könnyebben olvashatóbbá teheti a kódot.