Constants and literals in C++ - Time & Space Complexity
When we use constants and literals in code, it's important to know how they affect the program's speed.
We want to see how the time to run the code changes as the input size grows.
Analyze the time complexity of the following code snippet.
int main() {
const int x = 5;
int y = 10;
int z = x + y;
return z;
}
This code uses constants and literals to do a simple addition and return the result.
Identify the loops, recursion, array traversals that repeat.
- Primary operation: A single addition operation using constants and variables.
- How many times: Exactly once, no loops or repeated steps.
Explain the growth pattern intuitively.
| Input Size (n) | Approx. Operations |
|---|---|
| 10 | 1 |
| 100 | 1 |
| 1000 | 1 |
Pattern observation: The number of operations stays the same no matter how big the input is.
Time Complexity: O(1)
This means the program takes the same amount of time no matter how big the input is.
[X] Wrong: "Using constants or literals makes the program slower because they add extra steps."
[OK] Correct: Constants and literals are simple values that the computer handles instantly, so they don't slow down the program.
Understanding that constants and literals do not affect time complexity helps you focus on the parts of code that really matter for performance.
"What if we replaced the constant with a loop that repeats the addition multiple times? How would the time complexity change?"
Practice
constant in C++?Solution
Step 1: Understand the meaning of constant
A constant in C++ is a value that once set cannot be changed during program execution.Step 2: Compare options with definition
A fixed value that cannot be changed after initialization matches this definition exactly, while others describe variables or functions.Final Answer:
A fixed value that cannot be changed after initialization -> Option AQuick Check:
Constant = fixed value [OK]
- Confusing constants with variables
- Thinking constants are functions
- Assuming pointers are constants
MAX_SIZE with value 100 in C++?Solution
Step 1: Recall syntax for constant declaration
In C++, the keywordconstbefore the type declares a constant.Step 2: Check each option
const int MAX_SIZE = 100; usesconst int MAX_SIZE = 100;which is correct. int MAX_SIZE = 100; missesconst, C is incomplete without initialization, D uses invalid keyword.Final Answer:
const int MAX_SIZE = 100; -> Option DQuick Check:
Useconstbefore type for constants [OK]
- Omitting 'const' keyword
- Using 'constant' instead of 'const'
- Not initializing the constant
const int x = 5; int y = 10; std::cout << x + y << std::endl;
Solution
Step 1: Understand the code variables
Variablexis a constant with value 5,yis 10.Step 2: Calculate the expression output
The expressionx + yequals 5 + 10 = 15, which is printed.Final Answer:
15 -> Option BQuick Check:
5 + 10 = 15 [OK]
- Thinking constants cause errors
- Concatenating numbers as strings
- Expecting runtime errors
const int a = 10; a = 20; std::cout << a << std::endl;
Solution
Step 1: Analyze constant assignment
The variableais declared as constant with value 10.Step 2: Check reassignment
Trying to assign 20 toais illegal because constants cannot change value.Final Answer:
Cannot assign a new value to a constant variable -> Option CQuick Check:
Constants cannot be reassigned [OK]
- Trying to reassign constants
- Ignoring compiler error messages
- Confusing constants with variables
Solution
Step 1: Understand constant literal requirements
The value should be fixed, unchangeable, and precise (double is better than float).Step 2: Evaluate options
const double pi = 3.14159; declares a constant double with initialization, which is best practice. float pi = 3.14159; is not constant, C uses macro which is less safe, D misses initialization.Final Answer:
const double pi = 3.14159; -> Option AQuick Check:
Use 'const double' with initialization for constants [OK]
- Using non-const variables for constants
- Using #define instead of const
- Not initializing constants
Ready to prove it?
Pass the test and this pattern moves unknown
