Bird
Raised Fist0
C++programming~20 mins

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

Choose your learning style10 modes available
Challenge - 5 Problems
🎖️
Type Casting Master
Get all challenges correct to earn this badge!
Test your skills under time pressure!
❓ Predict Output
intermediate
2:00remaining
Output of static_cast with integer to float
What is the output of this C++ code snippet?
C++
int main() {
    int a = 5;
    float b = static_cast<float>(a) / 2;
    std::cout << b << std::endl;
    return 0;
}
A2.0
B2
CCompilation error
D2.5
Attempts:
2 left
💡 Hint
Remember that static_cast changes the type before division.
❓ Predict Output
intermediate
2:00remaining
Output of reinterpret_cast on pointer
What will this C++ code print?
C++
#include <iostream>
int main() {
    int x = 65;
    char* p = reinterpret_cast<char*>(&x);
    std::cout << *p << std::endl;
    return 0;
}
AUndefined behavior
BA
CCompilation error
D65
Attempts:
2 left
💡 Hint
Think about how integers are stored in memory and how char* reads bytes.
❓ Predict Output
advanced
2:00remaining
Output of const_cast removing constness
What is the output of this code?
C++
#include <iostream>
int main() {
    const int a = 10;
    int* p = const_cast<int*>(&a);
    *p = 20;
    std::cout << a << std::endl;
    return 0;
}
AUndefined behavior
B20
CCompilation error
D10
Attempts:
2 left
💡 Hint
Modifying a const variable via const_cast is risky.
❓ Predict Output
advanced
2:00remaining
Output of dynamic_cast with polymorphism
What will this code print?
C++
#include <iostream>
class Base { public: virtual ~Base() {} };
class Derived : public Base {};
int main() {
    Base* b = new Base();
    Derived* d = dynamic_cast<Derived*>(b);
    if (d) std::cout << "Derived" << std::endl;
    else std::cout << "Null" << std::endl;
    delete b;
    return 0;
}
ANull
BRuntime error
CCompilation error
DDerived
Attempts:
2 left
💡 Hint
dynamic_cast returns nullptr if cast fails.
🧠 Conceptual
expert
2:00remaining
Which cast is safest for downcasting polymorphic types?
In C++, when you want to safely convert a base class pointer to a derived class pointer, which cast should you use?
Astatic_cast
Breinterpret_cast
Cdynamic_cast
Dconst_cast
Attempts:
2 left
💡 Hint
Consider runtime type checking.

Practice

(1/5)
1. What does static_cast<int>(3.14) do in C++?
easy
A. Leaves the value unchanged as 3.14
B. Converts the integer 3 to the floating-point number 3.14
C. Causes a runtime error
D. Converts the floating-point number 3.14 to the integer 3

Solution

  1. Step 1: Understand static_cast usage

    static_cast<int> converts a value to an integer type explicitly.
  2. Step 2: Apply static_cast to 3.14

    The floating-point number 3.14 is converted to integer by dropping the decimal part, resulting in 3.
  3. Final Answer:

    Converts the floating-point number 3.14 to the integer 3 -> Option D
  4. Quick Check:

    static_cast<int>(3.14) = 3 [OK]
Hint: static_cast truncates decimals when converting float to int [OK]
Common Mistakes:
  • Thinking it rounds the number instead of truncating
  • Confusing static_cast with dynamic_cast
  • Expecting a runtime error from static_cast
2. Which of the following is the correct syntax for casting a double variable d to int using static_cast?
easy
A. int i = (int)static_cast(d);
B. int i = static_cast<int>(d);
C. int i = static_cast(d, int);
D. int i = static_cast<int>d;

Solution

  1. Step 1: Recall static_cast syntax

    The correct syntax is static_cast<type>(expression).
  2. Step 2: Match syntax with options

    int i = static_cast<int>(d); matches the correct syntax: int i = static_cast<int>(d);.
  3. Final Answer:

    int i = static_cast<int>(d); -> Option B
  4. Quick Check:

    Correct static_cast syntax = int i = static_cast<int>(d); [OK]
Hint: Use angle brackets for type in static_cast [OK]
Common Mistakes:
  • Using parentheses instead of angle brackets for type
  • Placing type after variable instead of inside <>
  • Mixing C-style cast syntax with static_cast
3. What is the output of the following C++ code?
double x = 9.99;
int y = static_cast<int>(x);
std::cout << y << std::endl;
medium
A. 9.99
B. 10
C. 9
D. Compilation error

Solution

  1. Step 1: Understand static_cast behavior on double to int

    static_cast truncates the decimal part, so 9.99 becomes 9.
  2. Step 2: Predict output of std::cout

    The integer 9 is printed to the console.
  3. Final Answer:

    9 -> Option C
  4. Quick Check:

    static_cast<int>(9.99) = 9 [OK]
Hint: Casting double to int drops decimals, no rounding [OK]
Common Mistakes:
  • Expecting rounding to 10 instead of truncation
  • Confusing output type with original double
  • Thinking static_cast causes compile error here
4. Identify the error in this code snippet:
float f = 3.5f;
int i = static_cast<int> f;
std::cout << i;
medium
A. Missing parentheses after static_cast<int>
B. Cannot cast float to int using static_cast
C. Variable i is not declared
D. Missing semicolon after float declaration

Solution

  1. Step 1: Check static_cast syntax

    static_cast requires parentheses around the value to cast, like static_cast<int>(f).
  2. Step 2: Identify missing parentheses

    The code misses parentheses after static_cast<int>, causing syntax error.
  3. Final Answer:

    Missing parentheses after static_cast<int> -> Option A
  4. Quick Check:

    static_cast<int>(f) needs parentheses [OK]
Hint: Always use parentheses after static_cast type [OK]
Common Mistakes:
  • Omitting parentheses after static_cast
  • Thinking static_cast can't convert float to int
  • Ignoring compiler error messages
5. Given the code below, what will be the output?
int a = 65;
char c = static_cast<char>(a);
std::cout << c << std::endl;

Note: ASCII value 65 corresponds to 'A'.
hard
A. 'A'
B. Compilation error
C. 65
D. Undefined behavior

Solution

  1. Step 1: Understand static_cast from int to char

    static_cast converts the integer 65 to its corresponding ASCII character 'A'.
  2. Step 2: Predict output of std::cout

    Printing the char variable outputs the character 'A'.
  3. Final Answer:

    'A' -> Option A
  4. Quick Check:

    static_cast<char>(65) = 'A' [OK]
Hint: Casting int to char prints ASCII character [OK]
Common Mistakes:
  • Expecting numeric 65 to print instead of 'A'
  • Thinking casting int to char causes error
  • Confusing char with string output
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