C - Type Casting

Type casting, also known as type conversion, is the process of converting one data type into another in a programming language. Type casting is essential when you want to perform operations that involve different data types, and you need to ensure that the data types are compatible.

There are two main types of type casting:

1. Implicit Type Casting (Automatic Type Conversion):

In implicit type casting, the conversion is performed by the compiler automatically without the need for explicit instructions from the programmer. The conversion occurs when a smaller data type is assigned to a larger data type, or when a data type with less precision is assigned to a data type with more precision.

Here's an example:


int num_int = 10;
double num_double;

// Implicit type casting from int to double
num_double = num_int;

printf("num_double: %lf\n", num_double);

In this example, num_int is an integer, and num_double is a double. When we assign num_int to num_double, implicit type casting occurs, converting the integer value 10 into a double. The result is stored in num_double, and when we print it, we get 10.000000 as the output.

2. Explicit Type Casting (Manual Type Conversion):

In explicit type casting, the programmer explicitly specifies the type conversion using casting operators. This is often used when you want to convert between incompatible data types or when you need to control the conversion explicitly.

In C, you can perform explicit type casting using casting operators. There are two commonly used casting operators:

  • (type) is used for C-style casting.
  • type(expression) is used for C++-style casting (available in C++ and some C compilers).

Here's an example of explicit type casting:


double price = 45.99;
int rounded_price;

// Explicit type casting from double to int
rounded_price = (int)price;

printf("rounded_price: %d\n", rounded_price);

In this example, we have a double value price, and we want to store it as an int in rounded_price. To do this, we use explicit type casting (int)price, which truncates the decimal part and stores the integer part in rounded_price. When we print rounded_price, we get 45 as the output.

Explicit type casting is particularly useful when you need to control how data is converted and want to avoid unexpected behavior due to automatic conversions.

It's important to use type casting carefully, as it can lead to data loss or unexpected behavior if not done correctly. When performing explicit type casting, you should be aware of potential data truncation or loss of precision.

In C, it's generally recommended to use explicit type casting when needed to make the code more readable and to avoid unexpected behaviors.