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)    // corect

Prima 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