StudyLover
  • Home
  • Study Zone
  • Profiles
  • Typing Tutor
  • B Tree
  • Contact us
  • Sign in
StudyLover C Programming: Type Conversions
Download
  1. C Programming
  2. Unit 1: Foundations of Problem Solving & C Language Basics
C Programming: User-Defined Data Types 🧑‍🎨 : Advanced C Type Conversions: Rules and Pitfalls
Unit 1: Foundations of Problem Solving & C Language Basics

Type conversion, also known as type casting, is the process of converting a variable's value from one data type to another. For example, converting an int to a float. C supports two primary types of conversion:

1.   Implicit Type Conversion: Performed automatically by the compiler.

2.   Explicit Type Conversion: Performed manually by the programmer.


1. Implicit Type Conversion (Coercion) ⚙️

Implicit conversion is an automatic conversion performed by the compiler when you mix different data types in an expression. The compiler generally converts the "smaller" or "lower-ranking" type to the "larger" or "higher-ranking" type to avoid any loss of data. This is also called type promotion.

Type Promotion Hierarchy

The compiler follows a set of rules to determine how to promote types. The general hierarchy from highest to lowest rank is:

long double > double > float > unsigned long > long > unsigned int > int

When an operation involves two different types, the lower-ranking type is promoted to the higher-ranking type.

Example

In this example, the int variable num_int is automatically converted to a float before the addition operation takes place. The result is therefore a float.

C

#include <stdio.h>

 
int main() {

    int num_int = 10;

    float num_float = 5.5f;

    float sum;

 
    // 'num_int' is implicitly converted to a float (10.0f)

    // Then 10.0f is added to 5.5f

    sum = num_int + num_float;

 
    printf("The integer value is: %d\n", num_int);

    printf("The float value is: %f\n", num_float);

    printf("The sum (as a float) is: %f\n", sum);

 
    return 0;

}


size=2 width="100%" align=center>

2. Explicit Type Conversion (Casting) 🖐️

Explicit conversion is a manual conversion where the programmer forces a value to be converted to another type using the cast operator (type). This is often used when you need to control the conversion precisely, especially in cases where data loss might occur.

·         Syntax: (target_data_type) expression;

While powerful, explicit casting can be risky as it can lead to a loss of information or data truncation.

Example 1: Data Truncation

When a floating-point value is cast to an integer, the fractional part is discarded (truncated).

C

#include <stdio.h>

 
int main() {

    double pi = 3.14159;

    int int_pi;

 
    // Explicitly casting the double to an int

    // The fractional part (.14159) is lost

    int_pi = (int)pi;

 
    printf("Original double value: %lf\n", pi);

    printf("Value after casting to int: %d\n", int_pi);

 
    return 0;

}

Example 2: A Practical Use Case

A very common use for casting is to ensure correct floating-point division between two integers. Without casting, the result of dividing two integers is always an integer.

C

#include <stdio.h>

 
int main() {

    int total_marks = 500;

    int obtained_marks = 430;

    

    // Incorrect: Integer division will truncate the result to 0

    float percentage_wrong = obtained_marks / total_marks;

    

    // Correct: Cast one of the operands to float to force floating-point division

    float percentage_correct = (float)obtained_marks / total_marks;

 
    printf("Incorrect Percentage (integer division): %f\n", percentage_wrong);

    printf("Correct Percentage (after casting): %f\n", percentage_correct * 100);

 
    return 0;

}


size=2 width="100%" align=center>

Summary: Implicit vs. Explicit ⚖️

Feature

Implicit Conversion

Explicit Conversion

Performed By

Compiler

Programmer

How it's Done

Automatically

Using the (type) cast operator

Risk

Generally safe (widening conversion)

Can be unsafe (narrowing conversion), potential for data loss

Also Known As

Coercion, Promotion

Casting

 

 

 

C Programming: User-Defined Data Types 🧑‍🎨 Advanced C Type Conversions: Rules and Pitfalls
Our Products & Services
  • Home
Connect with us
  • Contact us
  • +91 82955 87844
  • Rk6yadav@gmail.com

StudyLover - About us

The Best knowledge for Best people.

Copyright © StudyLover
Powered by Odoo - Create a free website