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 * 6se 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 == 2se najprej izvrši.
Zgornji izraz je enakovreden:
(1 == 2)! = 3
Opomba: Če ima stavek več operatorjev, lahko z oklepaji ()naredite kodo bolj berljivo.








