Prioritatea operatorilor
Într-o expresie mai lungă, operatorii nu se aplică în ordinea în care sunt scriși, ci în funcție de prioritatea lor, după un principiu asemănător ordinii efectuării operațiilor din aritmetică: înmulțirea se face înaintea adunării, parantezele au la rândul lor întâietate etc.
Operatorii cu aceeași prioritate se evaluează în ordinea scrierii lor, de la stânga la dreapta.
Tabelul priorității
Operatorii sunt ordonați de la prioritatea cea mai mare (1, se evaluează primii) la cea mai mică (15, se evaluează ultimii).
| Prioritate | Operatori | Categorie |
|---|---|---|
| 1 | ( ) | parantezele |
| 2 | + - ! ++ -- | operatorii unari |
| 3 | * / % | aritmetici multiplicativi |
| 4 | + - | aritmetici aditivi |
| 5 | << >> | deplasările pe biți |
| 6 | < <= > >= | relaționali |
| 7 | == != | relaționali de egalitate |
| 8 | & | „și” pe biți |
| 9 | ^ | „sau” exclusiv pe biți |
| 10 | | | „sau” pe biți |
| 11 | && | „și” logic |
| 12 | || | „sau” logic |
| 13 | ?: | operatorul ternar |
| 14 | = += -= *= /= | operatorii de atribuire |
| 15 | , | operatorul virgulă |
De ce contează ordinea
Prioritatea decide ce se calculează mai întâi, deci și ce rezultat obținem. În exemplul de mai jos, înmulțirea se face înaintea adunării, exact ca în matematică:
int x = 2 + 3 * 4; // 14, nu 20: * are prioritate mai mare decat +
int y = (2 + 3) * 4; // 20: parantezele se evalueaza primele
Când nu ești sigur de ordinea de evaluare, folosește paranteze. Ele au prioritatea cea mai mare, fac expresia mai ușor de citit și te feresc de greșeli, chiar dacă uneori nu sunt strict necesare.