‘int’ is 32 or 16 bit long and it depend upon machines. ‘short’ is often 16 bit long. ‘signed’ and ‘unsigned’ may be applied to char. But is plain chars are signed or unsigned ? It is machine dependent. If ‘x’ is float and ‘i’ is int, x = i and i = x both cause conversions.

Specify type correctly:

Please take a nice look to these points,

In C when we write an expression we must ensure that we specified the types correctly.

In an expression even if the left hand side is declared as floating point and the right hand side contain integer arithmetic & constant division, these constant division results the number truncated to integer. So we must represent these constants, as floating point number.

Consider the following expression

(float) a = (b – 18) * 7 / 9 ;

false result will goes to ‘ a ‘

we must write as,

(float) a = (b – 18) * 7 .0 / 9.0 ;

or

(float) a = (float) (b – 18) * 7 / 9 ;

Now,

when talking about the range of int , float it depends on the machines,

16 – bit int that is 2^16 = 65536 , dividing by 2 , 65536 / 2 it equals 32768

that is range – 32768 to 32767 for signed integers.

Consider the following expression,

(n > 0) ? f : n ;

If ‘f’ is float and ‘n’ is int the expression has type ‘float’ according to the conversion rule, not by the result of the condition.