Course Content
C++ Data Types
C++ Data Types
Explicit Type Conversion
If you are dealing with variables of type int
, rather than just numbers in code, you need to convert the value of a variable to double
or float
. This can be accomplished using the following syntax:
main
#include <iostream> int main() { int num1 = 9; int num2 = 4; std::cout << "No conversion: " << num1 / num2 << std::endl; std::cout << "With conversion: " << (double)num1 / num2 << std::endl; }
There are several ways to explicitly perform type conversion. This one is called C-style conversion:
main
#include <iostream> int main() { float num = 6.5; std::cout << (int)num << std::endl; // 6.5 to `int` is 6 std::cout << (bool)num << std::endl; // 6.5 to `bool` is true }
While this approach is concise, it does not clearly indicate the intent or nature of the conversion, which can lead to ambiguity and potential misuse.
There are more explicit and safer casting operators to provide better control over type conversions.
Most of the time, you only need a static_conversion
. We will not discuss other casts in-depth. Here is the syntax:
main
#include <iostream> int main() { float num = 6.5; std::cout << static_cast<int>(num) << std::endl; // 6.5 to `int` is 6 std::cout << static_cast<bool>(num) << std::endl; // 6.5 to `bool` is true }
We will not cover the difference between all of those. In general, static_cast
is preferable since it is more restrictive and can prevent some unexpected behavior with complex data types.
Thanks for your feedback!