Înapoi la blog
#c++#erori#debugging#sfaturi

Cele mai comune erori în C++ și soluțiile lor

Top erori întâlnite de începătorii în C++: punct și virgulă lipsă, indexare greșită, = vs ==, variabile neinițializate. Cum le recunoști și le repari rapid.

Toți programatorii fac erori — diferența e cât de repede le găsesc și le repară. Vestea bună: la început, greșelile sunt aproape mereu aceleași. Dacă le cunoști dinainte, le recunoști instant. Iată harta capcanelor clasice din C++ și cum le ocolești.

1. Punctul și virgula lipsă

Eroarea numărul unu, fără excepție. Fiecare instrucțiune se termină cu ;.

int x = 5      // GREȘIT: lipseste ;
std::cout << x;

Compilatorul îți spune ceva de genul expected ';' before .... Caută la finalul liniei de dinainte de cea indicată — adesea acolo e problema, nu unde arată mesajul.

2. = în loc de ==

= atribuie, == compară. Capcana e cumplită fiindcă programul compilează și rulează, dar face altceva:

int n = 3;
if (n = 5) {        // GREȘIT: atribuie 5, conditia e mereu adevarata
    std::cout << "mereu intra aici";
}

Corect: if (n == 5). Acesta e un bug logic, nu o eroare de compilare — cel mai greu de prins.

3. Index în afara limitelor

Tablourile încep de la 0. Un tablou de 5 elemente are indici de la 0 la 4:

int v[5];
v[5] = 10;   // GREȘIT: ultimul index valid e 4

C++ nu te oprește. Programul poate părea că merge, apoi se prăbușește aleator. Verifică mereu: ultimul index valid e dimensiune - 1.

4. Variabile neinițializate

În C++, o variabilă locală fără valoare conține gunoi:

int suma;          // valoare necunoscuta!
for (int i = 0; i < 5; i++) {
    suma += i;     // aduni la un numar aleator
}

Corect: int suma = 0;. Inițializează întotdeauna variabilele înainte să le folosești.

5. Împărțirea întreagă

Două numere întregi împărțite dau un întreg — partea zecimală dispare:

double medie = 7 / 2;    // medie devine 3.0, NU 3.5

Soluția: forțează zecimalele cu un cast — double medie = 7.0 / 2; sau (double)a / b.

6. Bucla infinită

Dacă variabila din condiție nu se schimbă, bucla nu se oprește niciodată. Vezi articolul nostru despre bucle — verifică mereu că ai pasul (i++) sau o citire în interior.

Cum repari eficient orice eroare

Tip de eroareCum o recunoștiTactică
De compilareprogramul nu porneștecitește primul mesaj de eroare
De execuție (crash)se închide bruscverifică indici și pointeri
Logicămerge, dar rezultat greșitafișează valori intermediare

Tehnica afișărilor (debug prin cout)

Când nu înțelegi de ce un program dă rezultat greșit, presară afișări ca să vezi ce se întâmplă:

#include <iostream>

int main() {
    int suma = 0;
    for (int i = 1; i <= 5; i++) {
        suma += i;
        std::cout << "Pas " << i << ", suma=" << suma << std::endl;
    }
    std::cout << "Rezultat final: " << suma << std::endl;
    return 0;
}

Vezi exact unde o ia razna. E cea mai simplă și folosită metodă de debugging din lume.

Citește mesajele de eroare cu calm. La început par criptice, dar conțin fix informația de care ai nevoie: fișierul, linia și ce a deranjat compilatorul. Rezolvă prima eroare și recompilează — adesea dispar și jumătate din celelalte.

Mentalitatea corectă

O eroare nu e un eșec, e un indiciu. Fiecare bug rezolvat te face mai bun. Programatorii experimentați nu fac mai puține greșeli neapărat — le găsesc mult mai repede, fiindcă le-au mai văzut.


La ByteSchool te învățăm nu doar să scrii cod, ci să-l depanezi ca un profesionist. Cu mentori din Big Tech lângă tine, transformi frustrarea erorilor în reflexe care îți economisesc ore. Pas cu pas, devii programatorul care repară orice. Vino să exersăm.