DEV Community

Farhan Ahmad
Farhan Ahmad

Posted on

7 C++ Mistakes Every Beginner Makes (and How to Fix Them)

When you start learning C++, the compiler can feel like it's out to get you. Most of the time, though, beginners trip over the same handful of mistakes. Here are seven I see again and again, with a quick fix for each.

1. Forgetting to initialize variables

int total;
total = total + 5;   // total holds garbage!
Enter fullscreen mode Exit fullscreen mode

In C++, a local variable is not set to zero for you. It holds whatever was in that memory before.

Fix: always give variables a starting value.

int total = 0;
total += 5;
Enter fullscreen mode Exit fullscreen mode

2. Using = instead of == in conditions

if (marks = 50) {   // assigns 50, always true
    cout << "Pass";
}
Enter fullscreen mode Exit fullscreen mode

Fix: use == to compare. Many developers turn on compiler warnings (-Wall) so the compiler catches this for them.

if (marks == 50) { ... }
Enter fullscreen mode Exit fullscreen mode

3. Off-by-one errors in loops

int arr[5] = {1, 2, 3, 4, 5};
for (int i = 0; i <= 5; i++) {   // arr[5] does not exist
    cout << arr[i];
}
Enter fullscreen mode Exit fullscreen mode

An array of size 5 has indexes 0 to 4.

Fix: loop with i < 5, or better, use a range-based loop:

for (int x : arr) cout << x << " ";
Enter fullscreen mode Exit fullscreen mode

4. Integer division surprises

int a = 7, b = 2;
double avg = a / b;   // 3, not 3.5
Enter fullscreen mode Exit fullscreen mode

Both operands are int, so C++ does integer division first, then converts.

Fix: make one side a double.

double avg = static_cast<double>(a) / b;   // 3.5
Enter fullscreen mode Exit fullscreen mode

5. Mixing cin >> and getline

int age;
string name;
cin >> age;
getline(cin, name);   // reads an empty line!
Enter fullscreen mode Exit fullscreen mode

cin >> age leaves the newline in the input buffer, and getline reads it immediately.

Fix: clear the leftover newline first.

cin >> age;
cin.ignore();
getline(cin, name);
Enter fullscreen mode Exit fullscreen mode

6. Missing break in switch

switch (choice) {
    case 1: cout << "Add";
    case 2: cout << "Delete";   // runs too when choice is 1
}
Enter fullscreen mode Exit fullscreen mode

Fix: end each case with break; unless you really want it to fall through.

7. Passing big objects by value

void printList(vector<int> v) { ... }   // copies the whole vector
Enter fullscreen mode Exit fullscreen mode

Fix: pass by const reference when you only need to read it.

void printList(const vector<int>& v) { ... }
Enter fullscreen mode Exit fullscreen mode

Wrapping up

Almost every beginner hits these, so don't worry if you recognized a few. Turn on compiler warnings, test with small inputs, and read error messages slowly; they usually point right at the problem.

If you want a structured path from the very basics (variables, loops, functions, arrays, pointers, OOP) with worked examples and practice questions, I wrote a beginner-friendly ebook: C++ Programming for Beginners — https://farhanbreeze4.gumroad.com/l/kxwlwo

Which of these mistakes got you first? Drop it in the comments.

Top comments (0)