Bird
Raised Fist0
C++programming~20 mins

Type modifiers in C++ - Practice Problems & Coding Challenges

Choose your learning style10 modes available
Challenge - 5 Problems
🎖️
Type Modifiers Master
Get all challenges correct to earn this badge!
Test your skills under time pressure!
❓ Predict Output
intermediate
2:00remaining
Output of const pointer vs pointer to const

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

C++
#include <iostream>

int main() {
    int x = 5;
    int y = 10;
    const int* ptr1 = &x;
    int* const ptr2 = &y;

    // *ptr1 = 6; // Line A (commented out)
    ptr1 = &y;    // Line B

    *ptr2 = 15;   // Line C
    // ptr2 = &x;  // Line D (commented out)

    std::cout << "*ptr1 = " << *ptr1 << ", *ptr2 = " << *ptr2 << std::endl;
    return 0;
}
A*ptr1 = 5, *ptr2 = 15
B*ptr1 = 5, *ptr2 = 10
C*ptr1 = 10, *ptr2 = 10
D*ptr1 = 10, *ptr2 = 15
Attempts:
2 left
💡 Hint

Remember that const int* ptr means the value pointed to is constant, but the pointer itself can change. int* const ptr means the pointer is constant, but the value pointed to can change.

❓ Predict Output
intermediate
1:30remaining
Effect of volatile modifier on variable

What will be the output of this C++ program?

C++
#include <iostream>

int main() {
    volatile int a = 10;
    int b = 10;

    a = a + 5;
    b = b + 5;

    std::cout << "a = " << a << ", b = " << b << std::endl;
    return 0;
}
Aa = 10, b = 15
Ba = 15, b = 15
Ca = 15, b = 10
DCompilation error due to volatile
Attempts:
2 left
💡 Hint

The volatile keyword tells the compiler not to optimize access to the variable, but it does not prevent normal operations.

❓ Predict Output
advanced
1:30remaining
Output of signed and unsigned arithmetic

What is the output of this C++ code snippet?

C++
#include <iostream>

int main() {
    unsigned int u = 5;
    int s = -10;
    auto result = u + s;
    std::cout << result << std::endl;
    return 0;
}
ACompilation error due to mixed types
B-5
C4294967291
D5
Attempts:
2 left
💡 Hint

When mixing signed and unsigned integers, the signed integer is converted to unsigned before the operation.

❓ Predict Output
advanced
1:30remaining
Effect of mutable keyword in const object

What will be the output of this C++ program?

C++
#include <iostream>

class Counter {
public:
    mutable int count = 0;
    void increment() const {
        count++;
    }
};

int main() {
    const Counter c;
    c.increment();
    std::cout << c.count << std::endl;
    return 0;
}
A1
B0
CCompilation error due to modifying const object
DUndefined behavior
Attempts:
2 left
💡 Hint

The mutable keyword allows modification of a member even in a const object.

🧠 Conceptual
expert
2:00remaining
Which option causes a compilation error due to type modifiers?

Which of the following code snippets will cause a compilation error because of incorrect use of type modifiers?

Aconst int* p = nullptr; *p = 10;
Bvolatile int v = 10; v = 20;
Cint* const p = new int(5);
Dconst int x = 5; int* p = (int*)&x; *p = 10;
Attempts:
2 left
💡 Hint

Think about what const int* means and whether you can modify the value it points to.

Practice

(1/5)
1. Which of the following type modifiers in C++ makes a variable value unchangeable after initialization?
easy
A. long
B. unsigned
C. volatile
D. const

Solution

  1. Step 1: Understand the role of const

    The const modifier makes a variable's value fixed after it is set.
  2. Step 2: Compare with other modifiers

    unsigned changes number sign, volatile affects optimization, long changes size, but none prevent value change.
  3. Final Answer:

    const -> Option D
  4. Quick Check:

    const = unchangeable value [OK]
Hint: const means value cannot be changed after set [OK]
Common Mistakes:
  • Confusing const with unsigned
  • Thinking volatile prevents changes
  • Assuming long affects constness
2. Which of the following declarations correctly uses the unsigned modifier for an integer variable named count?
easy
A. unsigned count int;
B. count unsigned int;
C. unsigned int count;
D. int count unsigned;

Solution

  1. Step 1: Recall correct syntax for unsigned int

    The correct order is unsigned int followed by the variable name.
  2. Step 2: Check each option

    unsigned count int; invalid order; count unsigned int; places variable before type, invalid; unsigned int count; correct; int count unsigned; invalid.
  3. Final Answer:

    unsigned int count; -> Option C
  4. Quick Check:

    unsigned int before variable name [OK]
Hint: Put unsigned before int and then variable name [OK]
Common Mistakes:
  • Placing unsigned after variable name
  • Mixing order of type and modifier
  • Using invalid syntax like unsigned count int
3. What is the output of the following C++ code?
unsigned int x = 10;
int y = -5;
if (x + y > 5)
std::cout << "True";
else
std::cout << "False";
medium
A. True
B. False
C. Compilation error
D. Undefined behavior

Solution

  1. Step 1: Understand unsigned and signed addition

    Adding signed -5 to unsigned 10: -5 promotes to unsigned (large value, e.g., 4294967291u on 32-bit).
  2. Step 2: Calculate the result and compare

    10u + 4294967291u = 4294967286u (wraps around mod 2^32). 4294967286u > 5u is true, so prints "True".
  3. Final Answer:

    True -> Option A
  4. Quick Check:

    unsigned + negative int promotes and wraps to large unsigned > 5 true [OK]
Hint: Mixing unsigned + signed negative promotes and wraps around [OK]
Common Mistakes:
  • Assuming -5 stays negative (ignores promotion)
  • Expecting True (ignores wraparound)
  • Thinking this causes compile error
4. Identify the error in this code snippet:
const int x;
x = 5;
medium
A. Missing initialization of const variable
B. Incorrect use of int type
C. Assignment operator is wrong
D. No error, code is correct

Solution

  1. Step 1: Check const variable initialization rules

    A const variable must be initialized when declared.
  2. Step 2: Analyze the code

    Here, const int x; is declared without initialization, then assigned later, which is invalid.
  3. Final Answer:

    Missing initialization of const variable -> Option A
  4. Quick Check:

    const must be initialized immediately [OK]
Hint: const variables need immediate initialization [OK]
Common Mistakes:
  • Trying to assign const after declaration
  • Ignoring initialization requirement
  • Thinking assignment operator is wrong
5. You want to store a large positive number that can never be negative and might exceed 2 billion. Which type modifier combination is best for the variable score?
hard
A. const int score;
B. unsigned long score;
C. short unsigned score;
D. volatile int score;

Solution

  1. Step 1: Understand the data requirements

    We need a large positive number, no negatives, possibly > 2 billion.
  2. Step 2: Match type modifiers to needs

    unsigned ensures no negatives; long increases size to hold large values; const fixes value; short limits size; volatile affects optimization, not size.
  3. Step 3: Choose best option

    unsigned long fits the need best.
  4. Final Answer:

    unsigned long score; -> Option B
  5. Quick Check:

    unsigned long = large positive number [OK]
Hint: Use unsigned long for large positive numbers [OK]
Common Mistakes:
  • Choosing const which fixes value
  • Using short which limits size
  • Using volatile which doesn't affect size
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