C Prednost in asociativnost operaterjev: opredelitev in primeri

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.

Zanimive Članki...