Increment and decrement operators in C++ - Time & Space Complexity
We want to see how the time it takes to run code with increment and decrement operators changes as the input size grows.
Specifically, we ask: how many times do these operators run when used inside loops?
Analyze the time complexity of the following code snippet.
for (int i = 0; i < n; i++) {
// increment operator used in loop control
// some constant time operation
}
This code runs a loop from 0 up to n, increasing i by 1 each time using the increment operator.
- Primary operation: The increment operator
i++inside the loop control. - How many times: It runs once each loop iteration, so about n times.
As n grows, the number of times the increment operator runs grows directly with n.
| Input Size (n) | Approx. Operations |
|---|---|
| 10 | About 10 increments |
| 100 | About 100 increments |
| 1000 | About 1000 increments |
Pattern observation: The work grows in a straight line as input size increases.
Time Complexity: O(n)
This means the time to run the code grows directly in proportion to the size of the input.
[X] Wrong: "Increment operators inside loops run only once regardless of loop size."
[OK] Correct: The increment operator runs every time the loop repeats, so it runs as many times as the loop runs, not just once.
Understanding how simple operations like increments add up helps you explain how loops affect performance clearly and confidently.
"What if we changed the increment operator to decrement and looped down from n to 0? How would the time complexity change?"
Practice
++ operator do in C++?Solution
Step 1: Understand the increment operator
The++operator increases the value of a variable by 1.Step 2: Compare with other options
Other options describe different operations like subtraction or multiplication, which are not what++does.Final Answer:
Adds 1 to the variable -> Option CQuick Check:
Increment (++) means add 1 [OK]
- Confusing ++ with --
- Thinking ++ multiplies or divides
- Mixing prefix and postfix effects
x by 1 using the decrement operator?Solution
Step 1: Identify prefix decrement syntax
The prefix decrement operator is--x;, which decrements the value first.Step 2: Check other options
x--;is postfix.x-1;subtracts but does not modifyx.x--1;is invalid.Final Answer:
--x; -> Option AQuick Check:
Prefix decrement is -- before variable [OK]
- Writing x--1 which is invalid
- Using x-1; which does not change x
- Confusing decrement with subtraction
int x = 5;
int y = x++ + ++x;
std::cout << y;
Solution
Step 1: Evaluate
Initially,x++and++xvaluesx = 5.x++uses 5 then increments to 6. Then++xincrements 6 to 7 and uses 7.Step 2: Calculate the sum
Sum is 5 (fromx++) + 7 (from++x) = 12.Step 3: Confirm final value of y
So,y = 12.Final Answer:
12 -> Option BQuick Check:
Postfix uses old value, prefix increments first [OK]
- Adding incremented values twice
- Mixing prefix and postfix effects
- Ignoring order of operations
int a = 3;
int b = ++a + a--;
std::cout << b;
Solution
Step 1: Analyze variable modifications
The variableais modified twice in the same expression: once by++aand once bya--.Step 2: Understand sequence point rules
In C++, modifying a variable more than once between sequence points causes undefined behavior.Final Answer:
Undefined behavior due to modifying variable twice without sequence point -> Option AQuick Check:
Multiple ++/-- on same var in one expression causes undefined behavior [OK]
- Assuming output is always predictable
- Ignoring undefined behavior rules
- Thinking syntax error occurs here
sum?int sum = 0;
int i = 0;
while (i++ < 5) {
sum += i;
}
Solution
Step 1: Trace the loop iterations and values of i
Initially,i = 0. Conditioni++ < 5usesithen increments. Iterations:
1) i=0 (check 0<5 true), then i=1, sum+=1
2) i=1 (check 1<5 true), then i=2, sum+=2
3) i=2 (check 2<5 true), then i=3, sum+=3
4) i=3 (check 3<5 true), then i=4, sum+=4
5) i=4 (check 4<5 true), then i=5, sum+=5
6) i=5 (check 5<5 false), loop endsStep 2: Calculate sum
Sum = 1+2+3+4+5 = 15Final Answer:
15 -> Option DQuick Check:
Postfix increments after comparison; sum 1 to 5 [OK]
- Assuming i increments before comparison
- Adding wrong range of numbers
- Confusing prefix and postfix in loop condition
Ready to prove it?
Pass the test and this pattern moves unknown
