În acest tutorial, veți afla despre prioritatea și asociativitatea operatorilor cu ajutorul exemplelor.
Precedența operatorilor
Prioritatea operatorilor determină care operator este executat mai întâi dacă există mai mult de un operator într-o expresie.
Să luăm în considerare un exemplu:
int x = 5 - 17* 6;
În C, prioritatea lui *
este mai mare decât -
și =
. Prin urmare, 17 * 6
este evaluat mai întâi. Apoi, expresia care implică -
este evaluată deoarece precedența lui -
este mai mare decât cea a =
.
Iată un tabel cu prioritatea operatorilor de la mai mare la mai mic. Proprietatea asociativității va fi discutată în scurt timp.
Tabel de precedență și asociativitate a operatorilor
Operator | Înțeles operator | Asociativitate |
---|---|---|
() () -> . | Apel funcțional Referință element matrice Selecție indirectă de membri Selecție directă de membri | De la stânga la dreapta |
! ~ + - ++ - & * sizeof (tip) | Negare logică Complet bitwise (1 's) Unar plus Unar minus Increment Decrement Dereferență (Adresă) Referința indicatorului Returnează dimensiunea unui obiect Tipărit (conversie) | De la dreapta la stanga |
* / % | Înmulțiți împărțiți restul | De la stânga la dreapta |
+ - | Binar plus (Adunare) Binar minus (scădere) | De la stânga la dreapta |
<< >> | Shift stânga Shift dreapta | De la stânga la dreapta |
< <= > > = | Mai puțin decât Mai puțin sau egal Mai mare decât Mai mare decât sau egal | De la stânga la dreapta |
== ! = | Egal cu Nu egal cu | De la stânga la dreapta |
& | Bitwise ȘI | De la stânga la dreapta |
^ | SAU exclusiv bit | De la stânga la dreapta |
| | OR bit | De la stânga la dreapta |
&& | Logic ȘI | De la stânga la dreapta |
|| | OR logic | De la stânga la dreapta |
?: | Operator condiționat | De la dreapta la stanga |
= * = / = % = + = - = & = = | = << = >> = | Atribuire simplă Atribuie produs Atribuie coeficient Atribuie restul Atribuie sumă Atribuie diferență Atribuie pe biți ȘI Atribuiți pe biți XOR Atribuiți pe biți SAU Atribuiți schimbarea la stânga Atribuiți schimbarea la dreapta | De la dreapta la stanga |
, | Separator de expresii | De la stânga la dreapta |
Asociativitatea operatorilor
Asociativitatea operatorilor determină direcția în care este evaluată o expresie. De exemplu,
b = a;
Aici, valoarea lui a este atribuită lui b, și nu invers. Acest lucru se datorează faptului că asociativitatea =
operatorului este de la dreapta la stânga.
De asemenea, dacă sunt prezenți doi operatori cu aceeași prioritate (prioritate), asociativitatea determină direcția în care execută.
Să luăm în considerare un exemplu:
1 == 2! = 3
Aici, operatorii ==
și !=
au aceeași prioritate. Și, asociativitatea lor este de la stânga la dreapta. Prin urmare, 1 == 2
este executat mai întâi.
Expresia de mai sus este echivalentă cu:
(1 == 2)! = 3
Notă: Dacă o instrucțiune are mai mulți operatori, puteți utiliza paranteze ()
pentru a face codul mai lizibil.