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 рдореЗрдВ рдмрджрд▓рд╛ рдЬрд╛рддрд╛ рд╣реИред
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
- Implicit Type Conversion
- Explicit Type Conversion
1. Implicit Type Conversion
Implicit Type Conversion рдХреЛ Automatic Type Conversion рднреА рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИред рдЗрд╕рдореЗрдВ Compiler рд╕реНрд╡рдпрдВ Data Type Convert рдХрд░рддрд╛ рд╣реИ рддрдерд╛ Programmer рдХреЛ рдЕрд▓рдЧ рд╕реЗ рдХреЛрдИ Conversion Statement рд▓рд┐рдЦрдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реЛрддреАред
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 |
int x = ch;
2. Explicit Type Conversion
Explicit Type Conversion рд╡рд╣ Conversion рд╣реИ рдЬрд┐рд╕рдореЗрдВ Programmer рд╕реНрд╡рдпрдВ рдпрд╣ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░рддрд╛ рд╣реИ рдХрд┐ рдХрд┐рд╕реА Value рдХреЛ рдХрд┐рд╕ Data Type рдореЗрдВ Convert рдХрд░рдирд╛ рд╣реИред рдЗрд╕реЗ Type Casting рднреА рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИред
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 рдХрд╣рд▓рд╛рддрд╛ рд╣реИред
int amount = (int)salary;
Functional Type Casting
Functional Style Casting рдореЗрдВ Data Type рдХреЛ Function рдХреА рддрд░рд╣ рд▓рд┐рдЦрд╛ рдЬрд╛рддрд╛ рд╣реИред
int num = int(value);
static_cast Operator
static_cast C++ рдХрд╛ рд╕рдмрд╕реЗ рдЕрдзрд┐рдХ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рдиреЗ рд╡рд╛рд▓рд╛ Type Casting Operator рд╣реИред рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ Compatible Data Types рдХреЗ рдмреАрдЪ рд╕реБрд░рдХреНрд╖рд┐рдд (Safe) Conversion рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдпрд╣ Compile Time рдкрд░ Type Checking рднреА рдХрд░рддрд╛ рд╣реИред
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 рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдХреЗрд╡рд▓ рд╡рд┐рд╢реЗрд╖ рдкрд░рд┐рд╕реНрдерд┐рддрд┐рдпреЛрдВ рдореЗрдВ рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред
int *ptr = const_cast<int*>(&value);
reinterpret_cast Operator
reinterpret_cast Low Level Type Conversion рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдореБрдЦреНрдпрддрдГ Memory Address, Hardware Programming рддрдерд╛ System Programming рдореЗрдВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред
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 рдХреЗ рд╕рд╛рде рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред
Derived *obj = dynamic_cast<Derived*>(ptr);
рдпрджрд┐ Conversion рд╕рдВрднрд╡ рдирд╣реАрдВ рд╣реЛрддрд╛ рддреЛ Pointer рдХреЗ рд▓рд┐рдП NULL рддрдерд╛ Reference рдХреЗ рд▓рд┐рдП Exception Generate рд╣реЛ рд╕рдХрддреА рд╣реИред
Widening Conversion
рдЬрдм рдЫреЛрдЯреЗ Data Type рдХреЛ рдмрдбрд╝реЗ Data Type рдореЗрдВ Convert рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рддрдерд╛ Data Loss рдирд╣реАрдВ рд╣реЛрддрд╛, рддрдм рдЙрд╕реЗ Widening Conversion рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИред
double number = value;
рдЗрд╕ Conversion рдореЗрдВ рд╕рд╛рдорд╛рдиреНрдпрддрдГ Precision Loss рдирд╣реАрдВ рд╣реЛрддрд╛ред
Narrowing Conversion
рдЬрдм рдмрдбрд╝реЗ Data Type рдХреЛ рдЫреЛрдЯреЗ Data Type рдореЗрдВ Convert рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рддрдм Narrowing Conversion рд╣реЛрддрд╛ рд╣реИред рдЗрд╕рдореЗрдВ Precision рдЕрдерд╡рд╛ Data Loss рд╣реЛрдиреЗ рдХреА рд╕рдВрднрд╛рд╡рдирд╛ рд░рд╣рддреА рд╣реИред
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
- What is Type Conversion?
- Differentiate Implicit and Explicit Type Conversion.
- What is Type Casting?
- Explain static_cast.
- What is const_cast?
- Explain reinterpret_cast.
- What is dynamic_cast?
- What is Widening Conversion?
- What is Narrowing Conversion?
- Which Casting Operator is safest in Modern C++?
Exam Oriented Important Questions
- Define Type Conversion in C++.
- Explain Implicit and Explicit Type Conversion.
- Write a note on Type Casting.
- Differentiate C Style Casting and static_cast.
- Explain const_cast with example.
- Describe reinterpret_cast and dynamic_cast.
- Explain Widening and Narrowing Conversion.
- 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 тЖТ