V tej vadnici boste s pomočjo primerov spoznali prednost in združljivost operaterjev.
Prednost operaterjev
Prednost operatorjev določa, kateri operater se izvede najprej, če je v izrazu več kot en operater.
Oglejmo si primer:
int x = 5 - 17* 6;
V C primarnosti *
višja od -
in =
. Zato 17 * 6
se najprej oceni. Nato je izraz, ki vključuje -
, ocenjen kot prednost pred -
višjim od =
.
Tu je tabela prednosti operaterjev od višje do nižje. O lastnostih asociativnosti bomo govorili v kratkem.
Tabela prednosti in združljivosti operaterjev
Operater | Pomen operaterja | Asociativnost |
---|---|---|
() () -> . | Funkcionalni klic Referenca elementa polja Posredna izbira člana Neposredna izbira člana | Od leve proti desni |
! ~ + - ++ - & * velikost (vrsta) | Logična negacija Dopolnitev bitov (1) Unary plus Unary minus Prirastek Derement Dereference (Address) Referenca kazalca Vrne velikost predmeta Typecast (pretvorba) | Od desne proti levi |
* / % | Množi razdeli preostanek | Od leve proti desni |
+ - | Binarni plus (seštevanje) Binarni minus (odštevanje) | Od leve proti desni |
<< >> | Levi premik Desni premik | Od leve proti desni |
< <= > > = | Manj kot Manj kot ali enako Večje kot Večje ali enako | Od leve proti desni |
== ! = | Enako kot Ni enako | Od leve proti desni |
& | Bitovno AND | Od leve proti desni |
^ | Bitno izključno ALI | Od leve proti desni |
| | Bitovno ALI | Od leve proti desni |
&& | Logično IN | Od leve proti desni |
|| | Logično ALI | Od leve proti desni |
?: | Pogojni operater | Od desne proti levi |
= * = / = % = + = - = & = = | = << = >> = | Preprosta dodelitev Dodelitev izdelka Dodelitev količnika Dodelitev ostanka Dodelitev vsote Dodelitev razlike Dodelitev bitov IN Dodelitev bitov XOR Dodelitev bitov ALI Dodelitev levega premika Dodelitev desnega premika | Od desne proti levi |
, | Ločilo izrazov | Od leve proti desni |
Združenje operaterjev
Asociativnost operatorjev določa smer vrednotenja izraza. Na primer
b = a;
Tu je vrednost a dodeljena b in ne obratno. To je zato, ker je asociativnost =
operaterja od desne proti levi.
Če sta prisotna dva operaterja iste prioritete (prioritete), asociativnost določa smer, v kateri se izvajata.
Oglejmo si primer:
1 == 2! = 3
Tukaj, operaterji ==
in !=
imajo enako prednost. Njihova asociativnost je od leve proti desni. Zato 1 == 2
se najprej izvrši.
Zgornji izraz je enakovreden:
(1 == 2)! = 3
Opomba: Če ima stavek več operatorjev, lahko z oklepaji ()
naredite kodo bolj berljivo.