</>
InfoPrep

Lecție

Operatori relaționali

Compară valori folosind operatorii <, >, <=, >=, == și !=.

Operatori relaționali în C++

Operatorii relaționali sunt folosiți pentru a compara două valori.

De exemplu:

5 < 10

verifică dacă 5 este mai mic decât 10.

Rezultatul unei comparații poate fi:

true  → adevărat
false → fals

Aceste valori sunt de tip bool, pe care l-am întâlnit deja la tipurile de date.


Operatorii relaționali

În C++ folosim:

OperatorSemnificație
==egal cu
!=diferit de
<mai mic decât
>mai mare decât
<=mai mic sau egal cu
>=mai mare sau egal cu

Cum funcționează o comparație?

Să avem:

int a = 5;
int b = 8;

Expresia:

a < b

devine:

5 < 8

Afirmația este adevărată, deci rezultatul este:

true

În schimb:

a > b

devine:

5 > 8

ceea ce este fals:

false

De reținut: un operator relațional compară două valori și produce true sau false.


Egalitatea ==

Pentru a verifica dacă două valori sunt egale folosim:

==

De exemplu:

int a = 7;
int b = 7;

Expresia:

a == b

verifică:

7 == 7

Rezultatul este:

true

Dacă valorile ar fi diferite, rezultatul ar fi false.


Atenție: = nu este ==

Aceasta este una dintre cele mai importante diferențe de reținut.

x = 5;

este o atribuire:

memorează valoarea 5 în x

În schimb:

x == 5

este o comparație:

este x egal cu 5?

Așadar:

=   → atribuire
==  → comparație

Atenție: = modifică valoarea unei variabile, iar == verifică dacă două valori sunt egale.


Diferit !=

Operatorul:

!=

verifică dacă două valori sunt diferite.

Pentru:

int x = 5;

avem:

x != 3 → true
x != 5 → false

Putem reține:

!= → diferit de

Mai mic și mai mare

Operatorii:

< → mai mic decât
> → mai mare decât

funcționează la fel ca în matematică.

Pentru:

int x = 7;

avem:

x < 10 → true
x > 10 → false
x > 3  → true

Mai mic sau egal / mai mare sau egal

Pentru „mai mic sau egal” folosim:

<=

iar pentru „mai mare sau egal”:

>=

Pentru:

int x = 10;

avem:

x <= 10 → true
x >= 10 → true

x < 10  → false
x > 10  → false

<= și >= includ și cazul în care valorile sunt egale.

Atenție: folosim <= și >=, nu =< sau =>.


Putem compara și variabile

Putem compara direct valorile a două variabile.

int a = 12;
int b = 7;

Atunci:

a > b  → true
a < b  → false
a == b → false
a != b → true

Rezultatul este o valoare bool

O comparație produce o valoare de tip bool.

De exemplu:

bool rezultat = 5 < 10;

Comparația:

5 < 10

este adevărată, deci:

rezultat = true

În schimb:

bool rezultat = 8 == 3;

produce:

rezultat = false

Acesta este motivul pentru care operatorii relaționali vor fi foarte importanți atunci când vom începe să construim condiții.


Exercițiu tip BAC

Indicați două valori pe care le poate avea variabila întreagă x, astfel încât, pentru fiecare dintre acestea, expresia C/C++ alăturată să aibă valoarea 1.

x % 20 == x / 23

Variante de răspuns

a. {20, 40}
b. {20, 41}
c. {40, 62}
d. {60, 83}

Rezolvare

Expresia compară două valori:

x % 20 → restul împărțirii lui x la 20
x / 23 → câtul întreg al împărțirii lui x la 23

Pentru ca expresia să aibă valoarea 1 (true), cele două rezultate trebuie să fie egale.

Verificăm variantele până o găsim pe cea corectă.

Varianta a:

x = 20

20 % 20 = 0
20 / 23 = 0

0 == 0 → true ✓

Dar trebuie ca ambele valori din variantă să verifice expresia:

x = 40

40 % 20 = 0
40 / 23 = 1

0 == 1 → false ✗

Deci varianta a nu este corectă.

Varianta b:

x = 20

20 % 20 = 0
20 / 23 = 0

0 == 0 → true ✓

și:

x = 41

41 % 20 = 1
41 / 23 = 1

1 == 1 → true ✓

Ambele valori verifică expresia.

Răspuns corect: b. {20, 41}


Exemple utile

Verificarea parității

În lecția despre operatorul % am întâlnit:

n % 2 == 0

Acum putem înțelege complet expresia.

Mai întâi:

n % 2

calculează restul împărțirii lui n la 2.

Apoi:

== 0

verifică dacă acel rest este egal cu 0.

Pentru:

n = 8

avem:

8 % 2 == 0
   ↓
0 == 0
   ↓
 true

Deci 8 este par.


Verificarea divizibilității

Expresia:

a % b == 0

verifică dacă a este divizibil cu b.

Pentru:

a = 15
b = 5

avem:

15 % 5 == 0
    ↓
0 == 0
    ↓
 true

În schimb:

16 % 5 == 0
    ↓
1 == 0
    ↓
 false

Observăm astfel că putem combina operații aritmetice cu comparații.


Ordinea evaluării

Într-o expresie precum:

n % 2 == 0

mai întâi se calculează operația aritmetică, apoi se face comparația.

De exemplu:

7 % 2 == 0
 ↓
1 == 0
 ↓
false

Nu este nevoie să memorăm acum o listă mare de priorități. Este suficient să înțelegem ordinea în care este evaluată expresia.


Recapitulare

Operatorii relaționali compară două valori:

== → egal cu
!= → diferit de

<  → mai mic decât
>  → mai mare decât

<= → mai mic sau egal cu
>= → mai mare sau egal cu

Rezultatul unei comparații este:

true

sau:

false

Nu confunda:

=  → atribuire
== → comparație

Operatorii relaționali pot fi combinați cu expresii aritmetice:

n % 2 == 0

sau:

a % b == 0

Mai întâi se calculează expresia aritmetică, apoi se compară rezultatul.

Operatorii relaționali ne permit să formulăm condiții. În continuare vom vedea cum putem combina mai multe condiții folosind operatorii logici.