U ovom ćete tutorijalu uz primjere naučiti o prednosti i asocijativnosti operatora.
Prednost operatora
Prioritet operatora određuje koji se operator izvršava prvi ako se u izrazu nalazi više od jednog operatora.
Razmotrimo primjer:
int x = 5 - 17* 6;
U C je prednost *od -i =. Dakle, 17 * 6prvo se ocjenjuje. Tada se izraz koji -se uključuje procjenjuje kao prioritet od -veći od izraza =.
Evo tablice prioriteta operatora od višeg prema nižem. O svojstvu asocijativnosti raspravljat će se uskoro.
Tablica prvenstva operatora i asocijativnosti
| Operater | Značenje operatora | Asocijativnost |
|---|---|---|
| () () -> . | Funkcionalni poziv Referenca elementa niza Neizravni odabir člana Izravni odabir člana | S lijeva nadesno |
| ! ~ + - ++ - & * veličina (vrsta) | Logička negacija Bitni dodatak (1) nadogradnje Unary plus Unary minus Increment Decrement Dereference (Address) Referenca pokazivača Vraća veličinu objekta Typecast (pretvorba) | S desna na lijevo |
| * / % | Množi podijeli ostatak | S lijeva nadesno |
| + - | Binarni plus (zbrajanje) Binarni minus (oduzimanje) | S lijeva nadesno |
| << >> | Lijevi pomak Desni pomak | S lijeva nadesno |
| < <= > > = | Manje od manje od ili jednako Veće od veće ili jednako | S lijeva nadesno |
| == ! = | Jednako s Nije jednako sa | S lijeva nadesno |
| & | Bitno I | S lijeva nadesno |
| ^ | Bitno ekskluzivno ILI | S lijeva nadesno |
| | | Bitno ILI | S lijeva nadesno |
| && | Logično I | S lijeva nadesno |
| || | Logično ILI | S lijeva nadesno |
| ?: | Uvjetni operater | S desna na lijevo |
| = * = / = % = + = - = & = = | = << = >> = | Jednostavno dodjeljivanje Dodijeli proizvod Dodijeli količnik Dodijeli ostatak Dodijeli zbroj Dodijeli razliku Dodijeli bit i I dodijeli bit XOR Dodijeli bit ili ILI Dodijeli lijevi pomak Dodijeli desni pomak | S desna na lijevo |
| , | Razdjelnik izraza | S lijeva nadesno |
Udruživanje operatora
Asocijativnost operatora određuje smjer u kojem se ocjenjuje izraz. Na primjer,
b = a;
Ovdje je vrijednost a dodijeljena b, a ne obrnuto. To je zato što je asocijativnost =operatora zdesna nalijevo.
Također, ako su prisutna dva operatora istog prioriteta (prioriteta), asocijativnost određuje smjer u kojem se izvršavaju.
Razmotrimo primjer:
1 == 2! = 3
Evo, operatori ==i !=imaju istu prednost. A, njihova je asocijativnost slijeva udesno. Dakle, 1 == 2prvo se izvršava.
Gornji izraz ekvivalentan je:
(1 == 2)! = 3
Napomena: Ako izraz ima više operatora, možete koristiti zagrade ()kako biste kôd učinili čitljivijim.








