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! 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; 2. Using = instead of == in conditions
if (marks = 50) { // assigns 50, always true cout << "Pass"; } Fix: use == to compare. Many developers turn on compiler warnings (-Wall) so the compiler catches this for them.
if (marks == 50) { ... } 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]; } 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 << " "; 4. Integer division surprises
int a = 7, b = 2; double avg = a / b; // 3, not 3.5 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 5. Mixing cin >> and getline
int age; string name; cin >> age; getline(cin, name); // reads an empty line! 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); 6. Missing break in switch
switch (choice) { case 1: cout << "Add"; case 2: cout << "Delete"; // runs too when choice is 1 } 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 Fix: pass by const reference when you only need to read it.
void printList(const vector<int>& v) { ... } 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.