各类数值型数据间如何混合运算?

整型(包括int,short,long)、实型(包括float,double)可以混合运算。前已述及,字符型数据可以与整型通用,因此,整型、实型、字符型数据间可以混合运算。例如:
10+'a'+1.5-8765.1234 *'b'
是合法的。在进行运算时,不同类型的数据要先转换成同一类型,然后进行运算。转换的规则按图3.10所示。

图3.10

图中横向向左的箭头表示必定的转换,如字符数据必定先转换为整数,short型转换为int型,float型数据在运算时一律先转换成双精度型,以提高运算精度(即使是两个float型数据相加,也先都化成double型,然后再相加)。
纵向的箭头表示当运算对象为不同类型时转换的方向。例如int型与double型数据进行运算,先将int型的数据转换成double型,然后在两个同类型(double型)数据间进行运算,结果为double型。注意箭头方向只表示数据类型级别的高低,由低向高转换。不要理解为int型先转换成unsigned int型,再转成long型,再转成double型。如果

 一个int型数据与一个double型数据运算,是直接将int型转成double型。同理,一个int型与一个long型数据运算,先将int型转换成long型。
换言之,如果有一个数据是float型或double型,则另一数据要先转换为double型,运算结果为double型。如果参加运算的两个数据中最高级别为long型,则另一数据先转换为long型,运算结果为long型。其他依此类推。
假设已指定i为整型变量,f为float变量,d为double型变量,e为long型,有下面式子:
   10+'a'+i*f-d/e

在计算机执行时从左至右扫描,运算次序为:
①进行10+‘a’的运算,先将‘a’转换成整数97,运算结果为107。
②由于“*”比“+”优先,先进行i*f的运算。先将i与f都转成double型,运算结果为double型。
③整数107与i*f的积相加。先将整数107转换成双精度数(小数点后加若干个0,即107.000…00),结果为double型。
④将变量e化成double型,d/e结果为double型。⑤将10+'a'+i*f的结果与d/e的商相减,结果为double型。
上述的类型转换是由系统自动进行的。

转自:http://202.195.237.152/ec/C141/no3/right3-2-5.html

  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值