C Operatoru prioritāte un asociētība: definīcija un piemēri

Š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.

Interesanti raksti...