发布网友 发布时间:2022-04-23 04:28
共1个回答
热心网友 时间:2023-07-12 11:39
整型、单精度型、双精度型数据可以混合运算。字符型数
据可以与整型通用,因此,整型、实型(包括单、双精度)、字符型数据间可以混合运算。例如:
10+'a'+1.5-8765.1234*'b'
是合法的。在进行运算时,不同类型的数据要先转换成同一类型,
然后进行运算。转换的规则按图所示
double
←
float
↑
long
↑
unsigned
↑
int
←
char,
short
图中横向向左的箭头表示必定的转换,如字符数据必定先转换为整数,
short型转为int型,float型数据在运算时一律转换成双精度型,以提高运算精度(即使是两个float型数
据在加化成double型,然后再相加)。
纵向的箭头表示当运算对象为不同类型时转换的方向。例如int型与doub1e型
数据进行运算,先将int型的数据转换成图double型,然后在两个同类型(double型)数据进行运算,
结果为double型。注意箭头方向只表示数据类型级别的高低,由低向高转换,不要理解为int型先
转成unsigned型,再转成1ong型,再转成double型。如果一个Int型数据与一个double型数据运算,
是直接将int型转成double型。同理,一个int型与一个Long型数据运算,先将int型转换成1ong型。
换言之,如果有一个数据是float型或double型,则另一数据要先转
为double型,结果为double型。如果二个数据中最高级别为1ong型,则另一数据先转为1ong型,结果
为1ong型。其它依此类推。假设已指定i为整型变量,f为float变量,d为double型变量,e为1ong型,有
下面式子:
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型。
上述的类型转换是由系统自动进行的。