C Prednost i asocijativnost operatora: definicija i primjeri

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.

Zanimljivi članci...