Type Casting with C++ Language ?

In this post, I wanted to note down one of the most important fundamentals of any programming language, which is ' Type Casting '.

Type Casting? Why is this important? 

Whenever we program, we'll have to store data. In order to do that there're :

Variables - "Physical location of Memory that allows to store data as sequence of bits & tells the compiler how to translate them into meaningful values"

But, sometimes you may end up having multiple types of operands to be operated with operators.

There are 2 basic Type Conversions.
  • Implicit Type Conversion
  • Explicit Type Conversion

Look at the following C++ Example. This is what we call Implicit (Automatic/Widening) Type Conversion where, you store int inside double. This is similar to : Ant inside Elephant.



#include<iostream>
using namespace std;
int main()
{
        double count = 7;
        cout<<" output "<<count<<endl;
        return 0;
}

But, can we perform the other way around. Elephant inside Ant.


#include<iostream>
using namespace std;
int main()
{
        int count = 7.98;
        cout<<" output "<<count<<endl;
        return 0;
}

According to C++ variable types,

Storing value of  7.98 a double value inside int may look like stupid. But, Automatic Type Conversion of C++ allows us to do this & the program compiles & runs without any problem at all. But, we lose precision & unsafe results are possible.

To avoid this happening We can use C++ Explicit Type Casting (Narrowing).

        double d=22.321;
        int i = (int)d; 

OR
        double d=22.321;
        int i = int(d);

Otherwise, we can try using static_cast of C++.

        double d = 23.321;
        int i = static_cast<int>(d);

No comments: