Šajā apmācībā jūs uzzināsit par operatoru prioritāti un asociativitāti, izmantojot piemērus.
Operatoru prioritāte
Operatoru prioritāte nosaka, kurš operators tiek izpildīts vispirms, ja izteiksmē ir vairāki operatori.
Apskatīsim piemēru:
int x = 5 - 17* 6;
C gadījumā prioritāte *
ir augstāka par -
un =
. Tādējādi 17 * 6
vispirms tiek novērtēts. Pēc tam izteiksme, kurā iesaistīts, -
tiek vērtēta kā tā, kuras prioritāte -
ir augstāka nekā =
.
Šeit ir tabula ar operatoru prioritāti no augstākas līdz zemākai. Drīz tiks apspriests asociācijas īpašums .
Operatoru prioritātes un asociācijas tabula
Operators | Operatora nozīme | Asociativitāte |
---|---|---|
() () -> . | Funkcionālā izsaukuma masīva elementa atsauce Netieša dalībnieka izvēle Tieša dalībnieka izvēle | No kreisās uz labo |
! ~ + - ++ - & * izmērs (tips) | Loģiskā noliegums Bitwise (1's) papildina Unary plus Unary mīnus pieauguma samazināšanas novirze (adrese) Rādītāja atsauce Atgriež objekta lielumu Typecast (konvertēšana) | No labās uz kreiso pusi |
* / % | Reizināt dalīt atlikumu | No kreisās uz labo |
+ - | Binārais plus (saskaitīšana) Binārais mīnus (atņemšana) | No kreisās uz labo |
<< >> | Kreisā maiņa Labā maiņa | No kreisās uz labo |
< <= > > = | Mazāk nekā Mazāks vai vienāds Lielāks nekā Lielāks vai vienāds | No kreisās uz labo |
== ! = | Vienāds ar Nav vienāds ar | No kreisās uz labo |
& | Bitu virzienā UN | No kreisās uz labo |
^ | Ekskluzīvi VAI OR | No kreisās uz labo |
| | Bitwise OR | No kreisās uz labo |
&& | Loģiski UN | No kreisās uz labo |
|| | Loģiski VAI | No kreisās uz labo |
?: | Nosacījuma operators | No labās uz kreiso pusi |
= * = / = % = + = - = & = = | = << = >> = | Vienkārša piešķiršana Piešķirt produktu Piešķirt koeficientu Piešķirt atlikumu Piešķirt summu Piešķirt atšķirību Piešķirt bitu un Piešķirt bitu XOR Piešķirt bitu vai Piešķirt kreiso nobīdi Piešķirt labo nobīdi | No labās uz kreiso pusi |
, | Izteicienu atdalītājs | No kreisās uz labo |
Operatoru asociācija
Operatoru asociativitāte nosaka izteiksmes novērtēšanas virzienu. Piemēram,
b = a;
Šeit a vērtība tiek piešķirta b, nevis otrādi. Tas ir tāpēc, ka =
operatora asociativitāte ir no labās uz kreiso.
Arī tad, ja ir divi vienādas prioritātes (prioritātes) operatori, asociativitāte nosaka to izpildes virzienu.
Apskatīsim piemēru:
1 == 2! = 3
Lūk, operatoriem ==
un !=
ir tāda pati prioritāte. Viņu asociācija ir no kreisās uz labo pusi. Tādējādi 1 == 2
tiek izpildīts pirmais.
Iepriekšminētais izteiciens ir ekvivalents:
(1 == 2)! = 3
Piezīme. Ja paziņojumam ir vairāki operatori, varat izmantot iekavas, ()
lai padarītu kodu vieglāk lasāmu.