Šioje pamokoje sužinosite apie operatorių pirmenybę ir asociatyvumą naudodamiesi pavyzdžiais.
Operatorių pirmenybė
Operatorių pirmenybė nustato, kuris operatorius vykdomas pirmiausia, jei išraiškoje yra daugiau nei vienas operatorius.
Panagrinėkime pavyzdį:
int x = 5 - 17* 6;
C atveju pirmenybė *
yra didesnė už -
ir =
. Taigi, 17 * 6
pirmiausia įvertinamas. Tada išraiška, susijusi su -
vertinama kaip pirmenybė -
yra didesnė nei =
.
Čia pateikiama operatorių pirmenybės lentelė nuo aukštesnės iki žemesnės. Netrukus bus aptarta asociatyvumo savybė .
Operatorių pirmenybės ir asociacijos lentelė
operatorius | Operatoriaus reikšmė | Asociatyvumas |
---|---|---|
() () -> . | Funkcinio skambučio masyvo elemento nuoroda Netiesioginis nario pasirinkimas Tiesioginis nario pasirinkimas | Iš kairės į dešinę |
! ~ + - ++ - & * sizeof (tipas) | Loginiai paneigimas Bitinis (1 '-os) papildyti Vienetinis plius unarinį atėmus Taškinis Silpimas Dereference (adresas) Pointer pagalbos grąžina objekto dydis Spausdinti medžiaga (perskaičiavimo) | Iš dešinės į kairę |
* / % | Padauginti padalinti likutį | Iš kairės į dešinę |
+ - | Dvejetainis pliusas (pridėjimas) Dvejetainis minusas (atimtis) | Iš kairės į dešinę |
<< >> | Kairysis poslinkis Dešinysis poslinkis | Iš kairės į dešinę |
< <= > > = | Mažesnis nei mažesnis arba lygus didesnis nei didesnis arba lygus | Iš kairės į dešinę |
== ! = | Lygu su Nelygu | Iš kairės į dešinę |
& | Bitais IR | Iš kairės į dešinę |
^ | Išskirtinis ARBA | Iš kairės į dešinę |
| | ARBA bitais | Iš kairės į dešinę |
&& | Loginis IR | Iš kairės į dešinę |
|| | Logiška ARBA | Iš kairės į dešinę |
?: | Sąlyginis operatorius | Iš dešinės į kairę |
= * = / = % = + = - = & = = | = << = >> = | Paprastas priskyrimas Priskirti produktą Priskirti koeficientą Priskirti likutį Priskirti sumą Priskirti skirtumą Priskirti po truputį IR Paskirti po truputį XOR Paskirti po truputį ARBA Paskirti kairįjį poslinkį Priskirti dešinįjį poslinkį | Iš dešinės į kairę |
, | Išraiškų skyrėjas | Iš kairės į dešinę |
Operatorių asociatyvumas
Operatorių asociatyvumas lemia išraiškos vertinimo kryptį. Pavyzdžiui,
b = a;
Čia a reikšmė priskiriama b, o ne atvirkščiai. Taip yra todėl, kad =
operatoriaus asociatyvumas yra iš dešinės į kairę.
Be to, jei yra du tos pačios pirmumo (prioriteto) operatoriai, asociatyvumas nustato jų vykdymo kryptį.
Panagrinėkime pavyzdį:
1 == 2! = 3
Čia operatoriai ==
ir !=
turi tą patį prioritetą. Jų asociatyvumas yra iš kairės į dešinę. Vadinasi, 1 == 2
vykdoma pirmiausia.
Aukščiau pateiktas posakis atitinka:
(1 == 2)! = 3
Pastaba: jei sakinyje yra keli operatoriai, galite naudoti skliaustus ()
, kad kodas būtų lengviau įskaitomas.