Care este diferența dintre = și == în C++?
Un singur = atribuie, == compară. „if (n = 0)” compilează, strică valoarea lui n și e mereu fals. În pseudocod comparația se scrie cu un singur =.
= este atribuirea: n = 0 pune 0 în n. == este comparația: n == 0 este adevărat dacă n are valoarea 0.
Greșeala clasică:
if (n = 0) // atribuie 0 lui n, apoi testează 0 → mereu fals
if (n == 0) // corectPrima linie compilează fără nicio eroare, distruge valoarea lui n și dă mereu fals. Compilatorul nu dă eroare, cel mult un avertisment dacă l-ai activat, așa că obișnuiește-te să cauți == în orice condiție.
În pseudocod e invers față de ce te-ai obișnuit în C++: comparația se scrie cu un singur = (dacă n = 0 atunci), iar atribuirea cu săgeată (n ← 0). La traducerea între cele două notații, fiecare = din pseudocod devine ==, iar fiecare ← devine =.
Lecția Operatori și expresii listează și celelalte greșeli care compilează.
Lecția care merge mai departe: Operatori și expresii