Operatori în C++

Un operator este un simbol (uneori un cuvânt) care indică o operație efectuată asupra uneia sau mai multor valori, numite operanzi.

După numărul de operanzi asupra cărora acționează, operatorii se împart în unari (un operand, de exemplu -x), binari (doi operanzi, de exemplu a + b) și ternari (trei operanzi). Îi vom grupa mai jos după rolul lor.

Operatori aritmetici

Operatorii aritmetici efectuează calcule între numere:

  • + adunare, - scădere;
  • * înmulțire, / împărțire;
  • % restul împărțirii întregi (modulo).
(a + b) / 2  // media aritmetica a doua numere
10 + 7 - 12  // se respecta ordinea operatiilor din matematica

Pentru două numere întregi, operatorul / face împărțire întreagă: 10 / 33, nu 3.33. Pentru un rezultat zecimal este nevoie de o conversie de tip.

Operatorul % este surprinzător de util: cu el aflăm rapid proprietăți ale unui număr întreg.

a % 2        // 0 daca a este par, 1 daca este impar
a % 10       // ultima cifra a lui a
a / 10 % 10  // penultima cifra a lui a

Publicitate

Operatori relaționali

Operatorii relaționali compară două valori și produc un rezultat logic (true sau false):

  • < mai mic, <= mai mic sau egal;
  • > mai mare, >= mai mare sau egal;
  • == egal, != diferit.

Atenție la diferența dintre = (atribuire) și == (comparare). a = 5 pune valoarea 5 în a, în timp ce a == 5 verifică dacă a este egal cu 5. Confuzia dintre ele este una dintre cele mai frecvente greșeli.

Operatori logici

Operatorii logici combină condiții:

  • ! negația (schimbă adevărat în fals și invers);
  • && conjuncția (ȘI): adevărată doar dacă ambele condiții sunt adevărate;
  • || disjuncția (SAU): adevărată dacă cel puțin una dintre condiții este adevărată.
(a >= 9) && (a <= 20)  // adevarat daca a este in intervalul [9, 20]
(a < 0) || (a > 100)   // adevarat daca a este in afara intervalului [0, 100]

A nega o condiție compusă înseamnă a o înlocui cu opusul ei: !(a > 5 && a < 10) este echivalent cu a <= 5 || a >= 10. Această regulă ne ajută să rescriem condițiile mai simplu.


Publicitate

Operatorul de atribuire și formele compuse

Operatorul = atribuie unei variabile valoarea unei expresii:

x = a + b;

Atunci când modificăm o variabilă folosind chiar valoarea ei, putem scrie mai pe scurt, cu un operator de atribuire compusă:

x += 7;  // echivalent cu x = x + 7
x -= 3;  // x = x - 3
x *= 2;  // x = x * 2
x /= 5;  // x = x / 5
x %= 2;  // x = x % 2

Operatorii de incrementare și decrementare

Operatorii ++ și -- cresc, respectiv scad cu 1 valoarea unei variabile. Sunt foarte folosiți la contoare:

k++;  // echivalent cu k = k + 1
k--;  // echivalent cu k = k - 1

Acești operatori pot fi scriși înainte (++k) sau după (k++) variabilă. Diferența contează doar când folosim valoarea în aceeași expresie: k++ folosește valoarea curentă și abia apoi crește, iar ++k crește mai întâi și apoi folosește noua valoare.

Operatorul ternar

Operatorul ternar ?: este singurul care lucrează cu trei operanzi. Îl putem privi ca pe o instrucțiune de decizie scrisă pe o singură linie:

conditie ? valoare_daca_adevarat : valoare_daca_fals

De exemplu, următoarele două secvențe afișează același lucru, cel mai mare dintre a și b:

if (a > b) cout << a;
else cout << b;

// echivalent, cu operatorul ternar:
cout << (a > b ? a : b);