SrcForge

Lesson 20

Typecasting

Typecasting (also called type conversion) is the process of converting a value from one data type to another. C supports implicit type conversion, done automatically by the compiler, and explicit type conversion (typecasting), done manually by the programmer using the cast operator.

C Track

Save progress as you learn.

44 lessons

Lesson content

Typecasting in C Programming: A Complete Beginner to Advanced Guide

What is Typecasting in C Programming?

Typecasting (also called type conversion) is the process of converting a value from one data type to another. It allows a program to use data in different forms when needed.

For example, you may want to convert an integer to a floating-point number to perform precise calculations or convert a floating-point number to an integer to remove the decimal part.

int num = 10;

float result = (float)num;

Here, the integer num is converted into a float.

Think of typecasting like translating a sentence from one language to another. The information remains the same, but its representation changes.

Why Does Typecasting Exist?

Different data types occupy different amounts of memory and represent values differently.

Typecasting helps to:

  • Perform calculations correctly
  • Prevent data loss in arithmetic operations
  • Convert values between compatible data types
  • Improve code readability
  • Work with library functions that require specific data types

Real-World Use Cases

Typecasting is commonly used in:

  • Percentage and average calculations
  • Financial applications
  • Scientific computations
  • Graphics programming
  • Embedded systems
  • File handling
  • Memory management
  • Data processing

Prerequisites

Before learning Typecasting in C Programming, you should understand:

  • Variables
  • Data types
  • Operators
  • Arithmetic expressions
  • Functions
  • Input and output (printf(), scanf())

Core Concepts of Typecasting in C Programming

What is Type Conversion?

Type conversion is the process of changing one data type into another. There are two types of type conversion in C:

TypeDescription
Implicit Type ConversionDone automatically by the compiler
Explicit Type Conversion (Typecasting)Done manually by the programmer

Implicit Type Conversion

In implicit conversion, the compiler automatically converts one data type into another when required.

int number = 10;

float value = number;

Here, number is automatically converted from int to float. No cast operator is required.

Output: 10.000000

Explicit Type Conversion (Typecasting)

In explicit typecasting, the programmer manually converts a value using the cast operator.

Syntax

(data_type)expression

Example

float average = (float)total / count;

The cast operator ensures that floating-point division is performed.

Why Typecasting is Important

Consider this example:

int a = 5;
int b = 2;

float result = a / b;

Output: 2.000000

Although result is a float, the division is performed using integers first, producing 2.

Correct approach:

float result = (float)a / b;

Output: 2.500000

Type Conversion Hierarchy

During arithmetic operations, smaller data types are generally promoted to larger compatible types. Typical promotion order: char, short, int, long, float, double. This process is known as type promotion.

Casting Between Different Data Types

Integer to Float

int number = 25;

float value = (float)number;

Float to Integer

float marks = 89.75;

int score = (int)marks;

Output: 89. The fractional part is discarded (truncated), not rounded.

Character to Integer

Characters are stored using their numeric codes (such as ASCII on most systems).

char letter = 'A';

int code = (int)letter;

Output: 65

Integer to Character

int value = 66;

char letter = (char)value;

Output: B

Code Examples

Example 1: Beginner – Integer to Float

#include <stdio.h>                      // Include standard input/output library

int main(void)                          // Program entry point
{
    int number = 10;                    // Declare an integer variable

    float value = (float)number;        // Convert the integer to a float

    printf("Integer = %d\n", number);   // Print the original integer

    printf("Float = %.2f\n", value);    // Print the converted float

    return 0;                           // Indicate successful execution
}

Output: Integer = 10 / Float = 10.00

Example 2: Beginner – Float to Integer

#include <stdio.h>                      // Include standard input/output library

int main(void)                          // Program entry point
{
    float price = 99.99f;               // Declare a floating-point variable

    int amount = (int)price;            // Convert the float to an integer

    printf("Price = %.2f\n", price);    // Print the original float

    printf("Amount = %d\n", amount);    // Print the converted integer

    return 0;                           // End the program
}

Output: Price = 99.99 / Amount = 99

Example 3: Intermediate – Accurate Average Calculation

#include <stdio.h>                              // Include standard input/output library

int main(void)                                  // Program entry point
{
    int totalMarks = 455;                       // Store total marks

    int subjects = 6;                           // Store the number of subjects

    float average = (float)totalMarks / subjects; // Perform floating-point division

    printf("Average = %.2f\n", average);        // Display the average

    return 0;                                   // End the program
}

Output: Average = 75.83

Example 4: Intermediate – Character to Integer

#include <stdio.h>                         // Include standard input/output library

int main(void)                             // Program entry point
{
    char letter = 'A';                     // Declare a character

    int asciiValue = (int)letter;          // Convert the character to its numeric code

    printf("Character = %c\n", letter);    // Print the character

    printf("ASCII Code = %d\n", asciiValue); // Print the numeric code

    return 0;                              // End the program
}

Example 5: Advanced – Calculate Percentage

#include <stdio.h>                                // Include standard input/output library

int main(void)                                    // Program entry point
{
    int obtainedMarks = 438;                      // Store obtained marks

    int totalMarks = 500;                         // Store total marks

    float percentage = ((float)obtainedMarks / totalMarks) * 100; // Calculate percentage

    printf("Percentage = %.2f%%\n", percentage);  // Print the percentage

    return 0;                                     // End the program
}

Output: Percentage = 87.60%

Common Mistakes and Pitfalls

WrongCorrect
float result = a / b;float result = (float)a / b;
Assuming (int)3.9 rounds to 4(int)3.9 becomes 3 (truncation)
Casting after the calculationCast before the operation if needed
Ignoring possible data lossVerify that the target type can represent the value
Using unnecessary castsLet implicit conversion handle safe, widening conversions when appropriate

Wrong:

int a = 5;

int b = 2;

float result = a / b;

Output: 2.000000

Correct:

int a = 5;

int b = 2;

float result = (float)a / b;

Output: 2.500000

Best Practices

  • Use explicit typecasting only when necessary.
  • Cast operands before arithmetic operations when precision matters.
  • Avoid unnecessary casts that reduce code readability.
  • Be aware of possible data loss when converting from larger or floating-point types to smaller integer types.
  • Use meaningful variable names to make conversions easier to understand.
  • Understand the difference between implicit conversion and explicit typecasting.

When NOT to Use This

Avoid typecasting when:

  • The compiler already performs a safe implicit conversion.
  • The conversion causes significant loss of precision or range.
  • The cast hides a programming error, such as passing the wrong type to a function.
  • You are using casts simply to suppress compiler warnings without understanding the underlying issue.

Summary / Key Takeaways

  • Typecasting in C programming converts one data type into another.
  • There are two kinds of conversion: implicit and explicit.
  • Implicit conversion is performed automatically by the compiler.
  • Explicit conversion uses the cast operator: (data_type)expression.
  • Cast before arithmetic operations to obtain accurate floating-point results.
  • Converting from float to int truncates the fractional part.
  • Use typecasting carefully to avoid data loss and unexpected behavior.
  • Understanding type promotion helps you write correct arithmetic expressions.

FAQ About Typecasting in C

1. What is typecasting in C?

Typecasting is the process of converting a value from one data type to another using the cast operator or automatic compiler conversions.

2. What is the difference between implicit and explicit type conversion?

Implicit conversion is performed automatically by the compiler, while explicit conversion is performed manually by the programmer using the cast operator.

3. Does typecasting change the original variable?

No. Typecasting converts the value used in an expression. The original variable remains unchanged unless you assign the converted value back to it.

int number = 10;

float value = (float)number;

Here, number is still an int.

4. Does converting a float to an int round the value?

No. It truncates the fractional part.

(float)3.9   // 3.9
(int)3.9     // 3

5. When should I use explicit typecasting?

Use explicit typecasting when you need floating-point division instead of integer division, a library function requires a specific data type, you intentionally convert between compatible data types, or you want to make the conversion explicit for clarity and maintainability.