Teoriechevron_rightOperatori și Priorități în C++

Teorie: Operatori și Priorități în C++

Operatori aritmetici, relaționali, logici și la nivel de bit. Regulile de precedență și asociativitate.

Nivel: Intermediarschedule 40 min

functionsOperatori și Priorități în C++

În C++, un operator este un simbol care indică compilatorului să efectueze anumite manipulări matematice sau logice. Limbajul dispune de o gamă largă de operatori pe care trebuie să îi cunoști foarte bine, mai ales prioritățile (ordinea în care se evaluează) și asociativitatea lor.

category1. Categorii Principale

Operatori Aditivi

Efectuează operații matematice de adunare și scădere.

  • + (Adunare): Se aplică pe numere întregi și reale.
  • - (Scădere): Se aplică pe numere întregi și reale.

Operatori Multiplicativi

Efectuează operații matematice de înmulțire și împărțire.

  • * (Înmulțire): Calculează produsul a două numere.
  • / (Împărțire): Pentru numere întregi returnează câtul împărțirii întregi (ex: 5/2 dă 2). Pentru numere reale returnează rezultatul exact (ex: 5.0/2.0 dă 2.5).
  • % (Modulo): Returnează restul împărțirii a două numere întregi (ex: 5%2 dă 1). Nu se poate aplica pe numere cu zecimale!

Operatori Relaționali și de Egalitate

Compară două valori și returnează un rezultat boolean (adevărat=1, fals=0).

  • < (Mai mic), > (Mai mare)
  • <= (Mai mic sau egal), >= (Mai mare sau egal)
  • == (Egalitate): Verifică dacă două valori sunt egale. A nu se confunda cu = (atribuire)!
  • != (Diferit): Verifică dacă două valori sunt inegale.

Operatori Logici

Folosiți pentru combinarea mai multor condiții relaționale.

  • && (ȘI Logic): Adevărat doar dacă AMBELE condiții sunt adevărate.
  • || (SAU Logic): Adevărat dacă CEL PUȚIN O condiție este adevărată.
  • ! (NEGAȚIE Logică): Schimbă valoarea de adevăr (adevărat devine fals, fals devine adevărat).

format_list_numbered2. Prioritățile Operatorilor

Prioritatea (precedența) determină ordinea în care operatorii sunt evaluați într-o expresie fără paranteze. Operatorii cu prioritate mai mare sunt evaluați primii.

Nivel PrioritateOperatoriAsociativitate
1 (cea mai mare)() [] .Stânga-Dreapta
2! ++ -- (tip)Dreapta-Stânga
3* / %Stânga-Dreapta
4+ -Stânga-Dreapta
5< <= > >=Stânga-Dreapta
6== !=Stânga-Dreapta
7&&Stânga-Dreapta
8||Stânga-Dreapta
9= += -= *= /=Dreapta-Stânga

warningCapcană la Bacalaureat

Atenție la combinarea operatorilor logici cu cei relaționali și aritmetici, dar și la operatorul MODULO (%).

// 1. Modulo NU se poate aplica pe float/double!
float x = 5.5 % 2; // Eroare de compilare!

// 2. Evaluarea scurtcircuitată a expresiilor logice
int a = 0, b = 5;
if (a != 0 && b/a > 1) // NU dă eroare!
/* Dacă 'a != 0' este FALS, partea a doua (b/a) NU se mai evaluează, prevenind eroarea de împărțire la zero (Short-circuit evaluation). */
syncSe încarcă statusul...