首页 理论教育C语言数据类型转换-C语言程序设计基础(第3版)

C语言数据类型转换-C语言程序设计基础(第3版)

【摘要】:纵向箭头表示当运算对象为不同数据类型时的转换方向,由低级别的类型向高级别的类型转换。强制类型转换示例。

当一个表达式中具有不同数据类型数据对象参与运算时,称为混合运算。C语言规定:不同数据类型的对象进行运算时,必须先进行数据类型转换,转换为相同类型的数据,然后再进行运算。数据类型的转换分为自动类型转换和强制类型转换。

1.数据类型的自动转换

自动转换也称为隐式转换,是编译系统自动进行的,不需要用户干预。自动转换时以不丢失数据、保证数据精度为原则。具体转换规则如图2.3所示。在图2.3中,指向左侧的箭头表示必须进行的转换,也就是说参加运算的数据是char或short型时,必须转换成int型;参加运算的数据是float型时,必须转换成double型。纵向箭头表示当运算对象为不同数据类型时的转换方向,由低级别的类型向高级别的类型转换。

图2.3 系统自动数据类型转换规则

例如,计算表达式128-'m'+84.7的过程如下:

①计算128-'m':计算时先将字符'm'转换为整数109,再计算128-109,计算结果为19。

②计算19+84.7:由于表达式中有实型数据,因而要先将19和84.7都转换为double型,再进行运算,结果为103.7。

2.数据类型的强制转换

强制类型转换又称为显式转换,其通过类型转换运算来实现数据类型的转换。一般形式为:

(类型说明符)(表达式)

其功能是:在本次运算中,强制将表达式的值转换成类型说明符所指定的数据类型,再参加运算。例如:(www.chuimin.cn)

(int)2.3        //把实型数据2.3强行转换为整型,结果为2

(int)(x+2)//把x+2的结果转换为整型

使用强制转换时应注意以下问题:

①类型说明符和表达式都必须加括号,若表达式是单个变量可以不加括号。

②无论是强制转换或是自动转换,都只是为了本次运算的需要而对变量进行的临时转换,并没有改变数据说明时对该变量定义的类型,变量或表达式的值并未发生改变。

【例2.16】 强制类型转换示例。

程序运行结果为:zf=4,f=4.56