Type Conversion in C++ Notes | Basic Computer Engineering | RGPV BTech First Year

Type Conversion in C++ Notes | Basic Computer Engineering | RGPV BTech First Year


Type Conversion in C++

C++ Programming рдореЗрдВ Type Conversion рд╡рд╣ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рд╣реИ рдЬрд┐рд╕рдХреЗ рджреНрд╡рд╛рд░рд╛ рдПрдХ Data Type рдХреА Value рдХреЛ рджреВрд╕рд░реЗ Data Type рдореЗрдВ рдмрджрд▓рд╛ рдЬрд╛рддрд╛ рд╣реИред Program рдореЗрдВ рдХрдИ рдмрд╛рд░ рдЕрд▓рдЧ-рдЕрд▓рдЧ Data Types рдХреЗ Variables рдХреЗ рдмреАрдЪ Calculation рдХрд░рдиреА рдкрдбрд╝рддреА рд╣реИред рдРрд╕реА рд╕реНрдерд┐рддрд┐ рдореЗрдВ Compiler рдЕрдерд╡рд╛ Programmer Data Type рдХреЛ Convert рдХрд░рддрд╛ рд╣реИ рддрд╛рдХрд┐ Program рд╕рд╣реА рдкрд░рд┐рдгрд╛рдо рджреЗ рд╕рдХреЗред

рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП рдпрджрд┐ рдПрдХ int Variable рдХреЛ float Variable рдХреЗ рд╕рд╛рде рдЬреЛрдбрд╝рдирд╛ рд╣реЛ, рддреЛ Compiler рдкрд╣рд▓реЗ Integer Value рдХреЛ Floating Point Value рдореЗрдВ Convert рдХрд░рддрд╛ рд╣реИред рдЗрд╕реА рдкреНрд░рдХрд╛рд░ рдХрдИ рдмрд╛рд░ Programmer рд╕реНрд╡рдпрдВ Conversion рдХрд░рддрд╛ рд╣реИ рдЬрд┐рд╕реЗ Type Casting рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИред


Introduction

Computer Memory рдореЗрдВ рдкреНрд░рддреНрдпреЗрдХ Data Type рдЕрд▓рдЧ Format рдореЗрдВ Store рд╣реЛрддрд╛ рд╣реИред рдЬрдм рджреЛ рдЕрд▓рдЧ-рдЕрд▓рдЧ Data Types рдХреЗ рдмреАрдЪ Operation рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рддрдм рдЙрдирдХреЗ Format рдХреЛ рд╕рдорд╛рди рдмрдирд╛рдирд╛ рдЖрд╡рд╢реНрдпрдХ рд╣реЛрддрд╛ рд╣реИред рдЗрд╕реА рдХрд╛рд░реНрдп рдХреЛ Type Conversion рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИред

Type Conversion Program рдХреА Accuracy, Flexibility рддрдерд╛ Compatibility рдХреЛ рдмрдврд╝рд╛рддрд╛ рд╣реИред рдпрджрд┐ рдЙрдЪрд┐рдд Conversion рди рдХрд┐рдпрд╛ рдЬрд╛рдП рддреЛ Data Loss, Overflow рдЕрдерд╡рд╛ Incorrect Output рдкреНрд░рд╛рдкреНрдд рд╣реЛ рд╕рдХрддрд╛ рд╣реИред


Definition of Type Conversion

Type Conversion рд╡рд╣ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рд╣реИ рдЬрд┐рд╕рдореЗрдВ рдХрд┐рд╕реА Variable рдЕрдерд╡рд╛ Expression рдХреЗ Data Type рдХреЛ рджреВрд╕рд░реЗ Data Type рдореЗрдВ рдмрджрд▓рд╛ рдЬрд╛рддрд╛ рд╣реИред

Type Conversion = Converting One Data Type into Another Data Type

Need of Type Conversion

  • Different Data Types рдХреЗ рдмреАрдЪ Calculation рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдПред
  • Compiler Compatibility рдмрдврд╝рд╛рдиреЗ рдХреЗ рд▓рд┐рдПред
  • Data Processing рдХреЛ рдЖрд╕рд╛рди рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдПред
  • Function Parameters Match рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдПред
  • Precision Improve рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдПред
  • Memory Optimization рдХреЗ рд▓рд┐рдПред

Characteristics of Type Conversion

  • Changes Data Representation.
  • May Increase Precision.
  • May Cause Data Loss.
  • Can Be Automatic or Manual.
  • Improves Program Flexibility.
  • Supported by Compiler.

Types of Type Conversion

  1. Implicit Type Conversion
  2. Explicit Type Conversion

1. Implicit Type Conversion

Implicit Type Conversion рдХреЛ Automatic Type Conversion рднреА рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИред рдЗрд╕рдореЗрдВ Compiler рд╕реНрд╡рдпрдВ Data Type Convert рдХрд░рддрд╛ рд╣реИ рддрдерд╛ Programmer рдХреЛ рдЕрд▓рдЧ рд╕реЗ рдХреЛрдИ Conversion Statement рд▓рд┐рдЦрдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реЛрддреАред

int a = 10;
float b = 20.5;
float c = a + b;

рдКрдкрд░ рджрд┐рдП рдЧрдП рдЙрджрд╛рд╣рд░рдг рдореЗрдВ Compiler a рдХреЛ рд╕реНрд╡рддрдГ Float рдореЗрдВ Convert рдХрд░ рджреЗрддрд╛ рд╣реИред

Advantages

  • Performed Automatically.
  • Easy to Use.
  • No Extra Coding Required.
  • Improves Compatibility.

Automatic Type Promotion

рдЬрдм рдЫреЛрдЯреЗ Data Type рдХреЛ рдмрдбрд╝реЗ Data Type рдореЗрдВ Automatically Convert рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рддрдм рдЙрд╕реЗ Automatic Type Promotion рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИред

Original Type Converted Type
char int
int float
float double
char ch = 'A';
int x = ch;

2. Explicit Type Conversion

Explicit Type Conversion рд╡рд╣ Conversion рд╣реИ рдЬрд┐рд╕рдореЗрдВ Programmer рд╕реНрд╡рдпрдВ рдпрд╣ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░рддрд╛ рд╣реИ рдХрд┐ рдХрд┐рд╕реА Value рдХреЛ рдХрд┐рд╕ Data Type рдореЗрдВ Convert рдХрд░рдирд╛ рд╣реИред рдЗрд╕реЗ Type Casting рднреА рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИред

float marks = 95.75;
int total = (int)marks;

рдпрд╣рд╛рдБ Floating Point Value рдХреЛ Integer рдореЗрдВ Convert рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ рддрдерд╛ Decimal Part рд╣рдЯ рдЬрд╛рддрд╛ рд╣реИред


C Style Type Casting

C Programming Language рдХреА рддрд░рд╣ Parentheses рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ Data Type Conversion рдХрд░рдирд╛ C Style Casting рдХрд╣рд▓рд╛рддрд╛ рд╣реИред

double salary = 25678.45;
int amount = (int)salary;

Functional Type Casting

Functional Style Casting рдореЗрдВ Data Type рдХреЛ Function рдХреА рддрд░рд╣ рд▓рд┐рдЦрд╛ рдЬрд╛рддрд╛ рд╣реИред

double value = 45.67;
int num = int(value);

static_cast Operator

static_cast C++ рдХрд╛ рд╕рдмрд╕реЗ рдЕрдзрд┐рдХ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рдиреЗ рд╡рд╛рд▓рд╛ Type Casting Operator рд╣реИред рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ Compatible Data Types рдХреЗ рдмреАрдЪ рд╕реБрд░рдХреНрд╖рд┐рдд (Safe) Conversion рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдпрд╣ Compile Time рдкрд░ Type Checking рднреА рдХрд░рддрд╛ рд╣реИред

double marks = 95.85;
int total = static_cast<int>(marks);

Advantages

  • Safe Type Conversion.
  • Compile Time Type Checking.
  • Readable Code.
  • Preferred in Modern C++.

const_cast Operator

const_cast рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рд╕реА Variable рдХреЗ const рдЕрдерд╡рд╛ volatile Qualifier рдХреЛ Remove рдЕрдерд╡рд╛ Add рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдХреЗрд╡рд▓ рд╡рд┐рд╢реЗрд╖ рдкрд░рд┐рд╕реНрдерд┐рддрд┐рдпреЛрдВ рдореЗрдВ рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред

const int value = 100;
int *ptr = const_cast<int*>(&value);

reinterpret_cast Operator

reinterpret_cast Low Level Type Conversion рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдореБрдЦреНрдпрддрдГ Memory Address, Hardware Programming рддрдерд╛ System Programming рдореЗрдВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред

int number = 10;
int *ptr = &number;
long address = reinterpret_cast<long>(ptr);

рдЗрд╕ Casting рдХрд╛ рдЙрдкрдпреЛрдЧ рдХреЗрд╡рд▓ Advanced Programming рдореЗрдВ рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП рдХреНрдпреЛрдВрдХрд┐ рдЧрд▓рдд рдЙрдкрдпреЛрдЧ рд╕реЗ Undefined Behavior рд╣реЛ рд╕рдХрддрд╛ рд╣реИред


dynamic_cast Operator

dynamic_cast Object Oriented Programming рдореЗрдВ Runtime Type Checking рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдЗрд╕рдХрд╛ рдкреНрд░рдпреЛрдЧ рдореБрдЦреНрдпрддрдГ Inheritance рддрдерд╛ Polymorphism рдХреЗ рд╕рд╛рде рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред

Base *ptr = new Derived();
Derived *obj = dynamic_cast<Derived*>(ptr);

рдпрджрд┐ Conversion рд╕рдВрднрд╡ рдирд╣реАрдВ рд╣реЛрддрд╛ рддреЛ Pointer рдХреЗ рд▓рд┐рдП NULL рддрдерд╛ Reference рдХреЗ рд▓рд┐рдП Exception Generate рд╣реЛ рд╕рдХрддреА рд╣реИред


Widening Conversion

рдЬрдм рдЫреЛрдЯреЗ Data Type рдХреЛ рдмрдбрд╝реЗ Data Type рдореЗрдВ Convert рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рддрдерд╛ Data Loss рдирд╣реАрдВ рд╣реЛрддрд╛, рддрдм рдЙрд╕реЗ Widening Conversion рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИред

int value = 50;
double number = value;

рдЗрд╕ Conversion рдореЗрдВ рд╕рд╛рдорд╛рдиреНрдпрддрдГ Precision Loss рдирд╣реАрдВ рд╣реЛрддрд╛ред


Narrowing Conversion

рдЬрдм рдмрдбрд╝реЗ Data Type рдХреЛ рдЫреЛрдЯреЗ Data Type рдореЗрдВ Convert рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рддрдм Narrowing Conversion рд╣реЛрддрд╛ рд╣реИред рдЗрд╕рдореЗрдВ Precision рдЕрдерд╡рд╛ Data Loss рд╣реЛрдиреЗ рдХреА рд╕рдВрднрд╛рд╡рдирд╛ рд░рд╣рддреА рд╣реИред

double salary = 45678.95;
int amount = static_cast<int>(salary);

Comparison of Different Type Conversion Methods

Method Performed By Safety Use Case
Implicit Compiler High Automatic Conversion
Explicit Programmer Medium Manual Conversion
static_cast Programmer High Modern C++ Casting
reinterpret_cast Programmer Low Low Level Programming
dynamic_cast Runtime Very High Inheritance

Advantages of Type Conversion

  • Improves Program Flexibility.
  • Supports Mixed Data Type Operations.
  • Reduces Coding Complexity.
  • Provides Better Compatibility.
  • Essential for Object Oriented Programming.
  • Improves Code Reusability.

Limitations

  • May Cause Data Loss.
  • Incorrect Casting Produces Unexpected Results.
  • Low Level Casting is Unsafe.
  • Improper Conversion Reduces Program Accuracy.

Applications

  • Scientific Computing.
  • Graphics Programming.
  • Game Development.
  • Embedded Systems.
  • Operating Systems.
  • Database Applications.
  • Financial Software.
  • Artificial Intelligence.
  • Compiler Design.

Industrial Importance

Professional Software Development рдореЗрдВ Type Conversion рдХрд╛ рдЙрдкрдпреЛрдЧ рд╡рд┐рднрд┐рдиреНрди Libraries, APIs рддрдерд╛ Database Systems рдХреЗ рдмреАрдЪ Data Exchange рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред Modern C++ Applications рдореЗрдВ static_cast рддрдерд╛ dynamic_cast рдХрд╛ рдЙрдкрдпреЛрдЧ рд╕реБрд░рдХреНрд╖рд┐рдд Conversion рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдЬрдмрдХрд┐ reinterpret_cast рдореБрдЦреНрдпрддрдГ Operating Systems рддрдерд╛ Embedded Programming рдореЗрдВ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред


Viva Questions

  1. What is Type Conversion?
  2. Differentiate Implicit and Explicit Type Conversion.
  3. What is Type Casting?
  4. Explain static_cast.
  5. What is const_cast?
  6. Explain reinterpret_cast.
  7. What is dynamic_cast?
  8. What is Widening Conversion?
  9. What is Narrowing Conversion?
  10. Which Casting Operator is safest in Modern C++?

Exam Oriented Important Questions

  1. Define Type Conversion in C++.
  2. Explain Implicit and Explicit Type Conversion.
  3. Write a note on Type Casting.
  4. Differentiate C Style Casting and static_cast.
  5. Explain const_cast with example.
  6. Describe reinterpret_cast and dynamic_cast.
  7. Explain Widening and Narrowing Conversion.
  8. Discuss the applications of Type Conversion.

Conclusion

Type Conversion C++ Programming рдХрд╛ рдПрдХ рдорд╣рддреНрд╡рдкреВрд░реНрдг Concept рд╣реИ рдЬреЛ рд╡рд┐рднрд┐рдиреНрди Data Types рдХреЗ рдмреАрдЪ рд╕реБрд░рдХреНрд╖рд┐рдд рддрдерд╛ рдкреНрд░рднрд╛рд╡реА Data Exchange рдХреЛ рд╕рдВрднрд╡ рдмрдирд╛рддрд╛ рд╣реИред Implicit Conversion, Explicit Conversion рддрдерд╛ Modern Casting Operators рдЬреИрд╕реЗ static_cast, const_cast, reinterpret_cast рдФрд░ dynamic_cast рдХрд╛ рд╕рд╣реА рдЙрдкрдпреЛрдЧ Program рдХреЛ рдЕрдзрд┐рдХ Reliable, Flexible рддрдерд╛ Maintainable рдмрдирд╛рддрд╛ рд╣реИред рдЗрд╕рд▓рд┐рдП рдкреНрд░рддреНрдпреЗрдХ Computer Engineering Student рдХреЗ рд▓рд┐рдП Type Conversion рдХреА рд╕реНрдкрд╖реНрдЯ рд╕рдордЭ рдЕрддреНрдпрдВрдд рдЖрд╡рд╢реНрдпрдХ рд╣реИред

Related Articles

Manipulators in C++ Notes | endl, setw, setprecision, setfill | Basic Computer Engineering | RGPV BTech First Year

0...

Read More тЖТ

Type Conversion in C++ Notes | Basic Computer Engineering | RGPV BTech First Year

Type Co...

Read More тЖТ

Assignment Operator in C++ Notes | Basic Computer Engineering | RGPV BTech First Year

Assignm...

Read More тЖТ

Copy Constructor in C++ Notes | Basic Computer Engineering | RGPV BTech First Year

Copy Co...

Read More тЖТ

this Pointer in C++ Notes | Basic Computer Engineering | RGPV BTech First Year

this Po...

Read More тЖТ