C语言隐式转换

自动类型转换是由系统自动完成的,又称为隐式转换。不同类型的数值进行运算时,系统会自动将级别低的类型转换成级别高的类型,然后再进行运算,运算结果与其中级别高的操作数的类型相同。数据类型的自动转换需要遵循的规则如图所示。

C语言隐式转换

在水平方向上,从右向左转换。所有的char型和short型自动转换成int型,所有的unsigned short型自动转换成unsigned型,所有的long型自动转换成unsigned long型,所有的float型自动转换成double型。

在垂直方向上,自下而上转换。从级别比较高的向级别比较低的方向转换。这里需要注意的是,箭头表示的是对象为不同类型的数据时转换的方向,并不表示转换的过程。例如:

        int i;
        float f;
        double d;
        long e;
        10 + 'a' + i*f - d/e

该表达式的数据类型的转换过程如图所示。

C语言隐式转换

根据运算的次序,先计算i*fd/e,分别先将int型的i转换成double型,将float型的f转换成double型,i*f的结果是double型的;将long型的e转换成double型的,d/e的结果为double型。就这样按照运算的顺序进行类型的转换,最终的结果为double型的。

在赋值运算时,如果变量的类型与所赋予的变量的值不是同一类型,那么赋值号右侧表达式的类型自动转换成赋值号左侧变量的类型。例如:

        int a;
        char b;
        long c;
        c=a+b;

在进行运算时,先计算a+b,将a和b转换成int型后求它们的和,结果是int型;再将a+b的和转换成变量c的类型long,然后再赋值给c。

赞(1)

评论 抢沙发

评论前必须登录!