Type Conversion in C

25 Nov, 2020
A type cast is basically a conversion from one type to another. There are two types of type conversion:
Implicit Type ConversionAlso known as ‘automatic type conversion’.Done by the compiler on its own, without any external trigger from the user.Generally takes place when in an expression more than one data type is present. In such condition type conversion (type promotion) takes place to avoid loss of data.All the data types of the variables are upgraded to the data type of the variable with largest data type.    
       bool -> char -> short int -> int -> 
       unsigned int -> long -> unsigned -> 
       long long -> float -> double -> long double
It is possible for implicit conversions to lose information, signs can be lost (when signed is implicitly converted to unsigned), and overflow can occur (when long long is implicitly converted to float).Example of Type Implicit Conversion:// An example of implicit conversion#include<stdio.h>int main(){    int x = 10;    // integer x    char y = 'a';  // character c      // y implicitly converted to int. ASCII     // value of 'a' is 97    x = x + y;         // x is implicitly converted to float    float z = x + 1.0;      printf("x = %d, z = %f", x, z);    return 0;}Output:x = 107, z = 108.000000
Implicit Type ConversionAlso known as ‘automatic type conversion’.Done by the compiler on its own, without any external trigger from the user.Generally takes place when in an expression more than one data type is present. In such condition type conversion (type promotion) takes place to avoid loss of data.All the data types of the variables are upgraded to the data type of the variable with largest data type.    
       bool -> char -> short int -> int -> 
       unsigned int -> long -> unsigned -> 
       long long -> float -> double -> long double
It is possible for implicit conversions to lose information, signs can be lost (when signed is implicitly converted to unsigned), and overflow can occur (when long long is implicitly converted to float).Example of Type Implicit Conversion:// An example of implicit conversion#include<stdio.h>int main(){    int x = 10;    // integer x    char y = 'a';  // character c      // y implicitly converted to int. ASCII     // value of 'a' is 97    x = x + y;         // x is implicitly converted to float    float z = x + 1.0;      printf("x = %d, z = %f", x, z);    return 0;}Output:x = 107, z = 108.000000
Also known as ‘automatic type conversion’.
Done by the compiler on its own, without any external trigger from the user.
Generally takes place when in an expression more than one data type is present. In such condition type conversion (type promotion) takes place to avoid loss of data.
All the data types of the variables are upgraded to the data type of the variable with largest data type.    
       bool -> char -> short int -> int -> 
       unsigned int -> long -> unsigned -> 
       long long -> float -> double -> long double

    
       bool -> char -> short int -> int -> 
       unsigned int -> long -> unsigned -> 
       long long -> float -> double -> long double

It is possible for implicit conversions to lose information, signs can be lost (when signed is implicitly converted to unsigned), and overflow can occur (when long long is implicitly converted to float).
Example of Type Implicit Conversion:
// An example of implicit conversion#include<stdio.h>int main(){    int x = 10;    // integer x    char y = 'a';  // character c      // y implicitly converted to int. ASCII     // value of 'a' is 97    x = x + y;         // x is implicitly converted to float    float z = x + 1.0;      printf("x = %d, z = %f", x, z);    return 0;}
Output:
x = 107, z = 108.000000
Explicit Type Conversion–This process is also called type casting and it is user defined. Here the user can type cast the result to make it of a particular data type.The syntax in C:(type) expressionType indicated the data type to which the final result is converted.// C program to demonstrate explicit type casting#include<stdio.h>  int main(){    double x = 1.2;      // Explicit conversion from double to int    int sum = (int)x + 1;      printf("sum = %d", sum);      return 0;}Output:sum = 2Advantages of Type ConversionThis is done to take advantage of certain features of type hierarchies or type representations.It helps us to compute expressions containing variables of different data types.
Explicit Type Conversion–This process is also called type casting and it is user defined. Here the user can type cast the result to make it of a particular data type.The syntax in C:(type) expressionType indicated the data type to which the final result is converted.// C program to demonstrate explicit type casting#include<stdio.h>  int main(){    double x = 1.2;      // Explicit conversion from double to int    int sum = (int)x + 1;      printf("sum = %d", sum);      return 0;}Output:sum = 2Advantages of Type ConversionThis is done to take advantage of certain features of type hierarchies or type representations.It helps us to compute expressions containing variables of different data types.
This process is also called type casting and it is user defined. Here the user can type cast the result to make it of a particular data type.
The syntax in C:
(type) expression
Type indicated the data type to which the final result is converted.
// C program to demonstrate explicit type casting#include<stdio.h>  int main(){    double x = 1.2;      // Explicit conversion from double to int    int sum = (int)x + 1;      printf("sum = %d", sum);      return 0;}
Output:
sum = 2
Advantages of Type Conversion
This is done to take advantage of certain features of type hierarchies or type representations.
It helps us to compute expressions containing variables of different data types.
Catch Block and Type Casting in C
Integer Promotion
This article is contributed by Ankita Dutta. If you like GeeksforGeeks and would like to contribute, you can also write an article and mail your article to contribute@geeksforgeeks.org. See your article appearing on the GeeksforGeeks main page and help other Geeks.
Please write comments if you find anything incorrect, or you want to share more information about the topic discussed above
C-Data Types
C Language
Writing code in comment?
Please use ide.geeksforgeeks.org,
generate link and share the link here.
Substring in C++
Function Pointer in C
Left Shift and Right Shift Operators in C/C++
Different Methods to Reverse a String in C++
std::string class in C++
Unordered Sets in C++ Standard Template Library
rand() and srand() in C/C++
Enumeration (or enum) in C
C Language Introduction
Power Function in C/C++