Š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 * 6vispirms 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 == 2tiek 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.








