Bird
Raised Fist0
C++programming~20 mins

Scope of variables in C++ - Practice Problems & Coding Challenges

Choose your learning style10 modes available
Challenge - 5 Problems
🎖️
Scope Mastery Badge
Get all challenges correct to earn this badge!
Test your skills under time pressure!
❓ Predict Output
intermediate
2:00remaining
Output of variable shadowing in nested blocks

What is the output of the following C++ code?

C++
#include <iostream>

int main() {
    int x = 5;
    {
        int x = 10;
        std::cout << x << std::endl;
    }
    std::cout << x << std::endl;
    return 0;
}
A10\n5\n
B5\n10\n
C10\n10\n
D5\n5\n
Attempts:
2 left
💡 Hint

Remember that inner blocks can have variables with the same name that hide outer variables.

❓ Predict Output
intermediate
2:00remaining
Output when modifying a global variable inside a function

What is the output of this C++ program?

C++
#include <iostream>

int count = 0;

void increment() {
    count += 1;
}

int main() {
    increment();
    increment();
    std::cout << count << std::endl;
    return 0;
}
A
2
B
0
C
1
D
Compilation error
Attempts:
2 left
💡 Hint

Global variables can be accessed and modified inside functions unless shadowed.

🔧 Debug
advanced
2:00remaining
Identify the error caused by variable scope

What error does this code produce when compiled?

C++
#include <iostream>

int main() {
    if (true) {
        int a = 10;
    }
    std::cout << a << std::endl;
    return 0;
}
AOutput: 10
BRuntime error: segmentation fault
CCompilation error: 'a' was not declared in this scope
DCompilation error: redefinition of 'a'
Attempts:
2 left
💡 Hint

Variables declared inside a block are not visible outside that block.

❓ Predict Output
advanced
2:00remaining
Output of static variable inside a function

What is the output of this program?

C++
#include <iostream>

void counter() {
    static int count = 0;
    count++;
    std::cout << count << std::endl;
}

int main() {
    counter();
    counter();
    counter();
    return 0;
}
A
Compilation error
B
0
1
2
C
1
1
1
D
1
2
3
Attempts:
2 left
💡 Hint

Static variables inside functions keep their value between calls.

🧠 Conceptual
expert
3:00remaining
Understanding variable scope and lifetime in nested functions

Consider the following C++ code using lambda functions. What is the output?

C++
#include <iostream>
#include <functional>

int main() {
    int x = 5;
    auto f = [x]() mutable {
        x += 10;
        std::cout << x << std::endl;
    };
    f();
    f();
    std::cout << x << std::endl;
    return 0;
}
A
15
15
5
B
15
25
5
C
15
25
25
D
Compilation error
Attempts:
2 left
💡 Hint

Mutable lambdas capture variables by value but allow modification of the copy inside the lambda.

Practice

(1/5)
1. What is the scope of a variable declared inside a function in C++?
easy
A. It can only be used inside that function.
B. It can be used anywhere in the program.
C. It can be used only in the main function.
D. It can be used in all functions after declaration.

Solution

  1. Step 1: Understand local variable scope

    A variable declared inside a function is local to that function only.
  2. Step 2: Check usage outside the function

    Such variables cannot be accessed outside their function block.
  3. Final Answer:

    It can only be used inside that function. -> Option A
  4. Quick Check:

    Local variable scope = inside function only [OK]
Hint: Local variables live only inside their function block [OK]
Common Mistakes:
  • Thinking local variables are accessible globally
  • Confusing local and global variable scopes
2. Which of the following is the correct way to declare a global variable in C++?
easy
A. int x; inside main() function
B. int x; outside all functions
C. int x; inside a block { }
D. int x; inside a for loop

Solution

  1. Step 1: Identify global variable declaration

    Global variables must be declared outside all functions and blocks.
  2. Step 2: Check each option

    Only int x; outside all functions declares the variable outside all functions, making it global.
  3. Final Answer:

    int x; outside all functions -> Option B
  4. Quick Check:

    Global variable declared outside functions [OK]
Hint: Global variables declared outside all functions [OK]
Common Mistakes:
  • Declaring global variables inside functions
  • Declaring variables inside loops thinking they are global
3. What will be the output of the following C++ code?
int x = 5;
void func() {
    int x = 10;
    std::cout << x << std::endl;
}
int main() {
    func();
    std::cout << x << std::endl;
    return 0;
}
medium
A. 10\n5
B. 10\n10
C. 5\n5
D. 5\n10

Solution

  1. Step 1: Analyze variable shadowing in func()

    Inside func(), local x = 10 shadows global x = 5, so prints 10.
  2. Step 2: Analyze main() output

    After func(), main() prints global x = 5.
  3. Final Answer:

    10\n5 -> Option A
  4. Quick Check:

    Local shadows global, prints 10 then 5 [OK]
Hint: Local variable shadows global inside function [OK]
Common Mistakes:
  • Assuming global x changes inside func()
  • Confusing which x is printed in main()
4. Identify the error in the following C++ code:
int main() {
    std::cout << x << std::endl;
    int x = 5;
    return 0;
}
medium
A. Error: x declared twice
B. No error, prints 5
C. Error: Missing semicolon
D. Error: x used before declaration

Solution

  1. Step 1: Check variable usage before declaration

    The code tries to print x before it is declared.
  2. Step 2: Understand C++ variable initialization rules

    Variables must be declared before use; using x before declaration causes error.
  3. Final Answer:

    Error: x used before declaration -> Option D
  4. Quick Check:

    Use after declaration required [OK]
Hint: Declare variables before using them [OK]
Common Mistakes:
  • Assuming declaration order does not matter
  • Ignoring compiler errors about undeclared variables
5. Consider the following code snippet:
int x = 1;
void update() {
    x = 5;
    int x = 10;
    std::cout << x << std::endl;
}
int main() {
    update();
    std::cout << x << std::endl;
    return 0;
}

What will be the output and why?
hard
A. 10\n5 because local x shadows global, but global x updated before local declaration
B. 10\n1 because global x not updated due to local shadowing
C. Compilation error due to variable redeclaration
D. 5\n10 because global x updated first, then local x printed

Solution

  1. Step 1: Analyze variable declaration order

    The line x = 5; appears before the local variable x is declared in the same function.
  2. Step 2: Understand C++ rules on variable usage

    Using a variable before its local declaration in the same scope is illegal and causes a compilation error.
  3. Step 3: Reason about the error

    Because local x is declared after x = 5;, the assignment tries to assign to local x before its declaration, which is invalid.
  4. Final Answer:

    Compilation error due to variable redeclaration -> Option C
  5. Quick Check:

    Using variable before declaration in same scope causes error [OK]
Hint: Cannot use variable before local declaration in same scope [OK]
Common Mistakes:
  • Thinking there's a compilation error on x=5
  • Believing local shadowing prevents global update before declaration
Recommended

Ready to prove it?

Pass the test and this pattern moves unknown strong while earning +1 Grip toward your certificate.

10 questions~5 mineasy hard