频道栏目
读书频道 > 软件开发 > c语言 > C语言程序设计(第二版)
2.6.3 不同数据类型间的混合运算
2013-08-06 09:55:05     我来说两句
收藏   我要投稿

本文所属图书 > C语言程序设计(第二版)

C语言是国内许多高校为学生开设的第一门程序设计语言课程。C语言具有很强的实用性,它既可用来编写系统软件,也可用来编写各种应用软件。本书主要内容包括:C语言概述,数据类型、运算符与表达式,程序设计初步,...  立即去当当网订购

在C语言中,整型、实型和字符型数据之间可以混合运算。

如果一个运算符两侧的操作数的数据类型不同,则系统按“先转换、后运算”的原则,首先将数据自动转换为同一类型,然后在同一类型数据间进行运算。

有两种转换方式:自动转换和强制转换。

1. 自动转换

自动转换就是系统根据规则自动地将两个不同数据类型的运算对象转换为同一数据类型。自动转换又称隐式转换。自动转换的规则如图2.3所示。
 

2.3  自动转换规则

在图2.3中,横向向右的箭头表示是必须的转换。char和short 型必须转换成int型参与运算,float型必须转换成double型参与运算(即使是两个float型数据相加,也要先转换成double型,然后再相加)。

在图2.3中,纵向箭头表示的是当运算对象为不同类型时转换的方向。例如,若int型与double型数据进行混合运算,则先将int型数据转换成double型,然后进行运算,结果为double型。纵向箭头的方向只是表示数据类型的高低,由低向高转换,不要理解为int型先转换成unsigned型,然后再转换成long型,然后再转换成double型。

注意:

自动转换只是针对一个运算符两侧的两个运算对象,而不能对表达式中的所有运算符涉及到的运算对象做一次性的自动转换。例如,表达式6.0/5+4.32和表达式6/5+4.32,前者的值是5.52,后者的值是5.32。因为6.0/5是先将5转换成实型后进行运算,值是1.2,再与4.32相加,值是5.52。而6/5是按int型运算,值是1,再与4.32相加,值是5.32;不要理解成将6/5+4.32中的每个数都转换成实型后再运算。

2. 强制转换

编写程序时,可以利用强制类型转换运算符将一个表达式的值转换成所需类型,强制转换的格式如下:

(类型名)(表达式)

例如:

(float)a (将a转换成float型,注意不能写成float(a))

(int)3.45 (将3.45转换成int型)

(double)(7%6) (将7%6的值转换成double型)

(float)(x+y) (将x+y的值转换成float型,注意不能写成(float)x+y)

 

您对本文章有什么意见或着疑问吗?请到论坛讨论您的关注和建议是我们前行的参考和动力  
上一篇:2.6.2 算术表达式
下一篇:2.7.1 赋值运算符
相关文章
图文推荐
排行
热门
最新书评
特别推荐

关于我们 | 联系我们 | 广告服务 | 投资合作 | 版权申明 | 在线帮助 | 网站地图 | 作品发布 | Vip技术培训 | 举报中心

版权所有: 红黑联盟--致力于做实用的IT技术学习网站