17,542 views

1 Answer

5 votes
5 votes

Type conversion

  • Type conversion occurs when the expression has data of mixed data types. 
  • example of such expression include converting an integer value in to a float value, or assigning the value of the expression to a variable with different data type.
  • In type conversion, the data type is promoted from lower to higher because converting higher to lower involves loss of precision and value.
  • For type conversion, C following some General rules explained below 
    • Integer types are lower than floating point types
    • Signed types are lower than unsigned types
    • Short whole number types are lower than longer types
    • double>float>long>int>short>char

In other word :

Type Conversion refers to translating of values (roughly speaking, contents of the object), so that they may be interpreted as belonging to a new type.

Example : 

double  d;
long    l;
int     i;

if (d > i)   d = i;
if (i > l)   l = i;
if (d == l)  d *= 2;

Type Casting (or) Explicit Type conversion:

  • Explicit type conversions can be forced in any expression , with a unary operator called a cast.
  • Syntax is 

             (type-name) expression;

  • Example 

int n;
float x;
x=(float)n;

  • The above statement will convert the value of n to a float value before assigning to x.but n is not altered
  • Type casting does not change the actual value of the variable but the resultant value may be put in temporary storage.
  • The cast operator has the same high precedence as other unary operators.
  • The Typecasting should not be used in some places.such as
  • Type cast should not be used to override a const or volatile declaration.overriding these type modifiers can cause the program to fail to run correctly.
  • Type cast should not be used to turn a pointer to one type of structrure or data type in to another.
  • Example of type casting using pointers

#include<stdio.h>
main()
{
    void *temp; //void pointer
    char c='a',*ch="hello";
    int i=10;
    temp=&c;
    printf("char=%c\n",*(char *)temp);
    temp=ch;
    printf("string=%s\n",(char *)temp);
    temp=&i;
    printf("i=%d\n",*(int *)temp);
    return 0;
}
output:
char=a
string=hello
i=10       //here temp is a void pointer.temp is used to typecast to anyother pointer

Related questions

0 votes
0 votes
1 answer
4
LavTheRawkstar asked Apr 4, 2017
11,867 views
What is fragmentation in terms of networking?The difference between Transparent and non transparent fragmentation is ?