先给个例题,答案在最后
假设已说明 i 为整型变量,f 为单精度实型变量,d 为双精度实型变量,则表达式10+‘a’+i*f-d 最后所得值的数据类型为( )
A.字符型 B.整型 C.单精度实型 D.双精度实型
整型、单精度型、双精度型数据都可以混合运算。字符型数据可以与整型通用,也就是说,整型、实型(包括单、双精度)、字符型数据间可以混合运算。
⚠️注意,不同类型的数据类型要先转换成同一类型,然后进行运算。如下图所示。
1、图中横向向左的箭头表示一定要转换。
例如,float型数据在运算时一律转换成双精度,以提高运算精度(即使是两个float型数据相加,也先都化成double类型,然后再相加)。
字符型数据必定转换成整数,short型转换成int型。
2、纵向的箭头表示当运算对象为不同类型时转换的方向。
例如,int型与double型数据进行运算,先将int型的数据转换成double型,然后在两个同类型(double型)数据间进行运算,结果为double型。
说明:
(1)当单、双精度浮,点型数据赋给整型变量时,浮点数的小数部分将被舍弃。
(2)当整型数据赋给浮点数变量时,数值上不发生任何变化,但有效位增加。
(3)如果算术运算符两个运算对象都为整数,那么,运算将按照整型数据的运算规则,这就意味着对于除法运算来讲,其结果的小数部分将被舍弃。在这种情况下,即使运算结果赋给浮点型变量也是一样的,结果的小数部分也将被舍弃。
例如:
float b;
int a=8;
…
b= 20/a;
b的结果是2.0,而不是2.5。
(4)只要某个算术运算对象中有一个是浮点型数据,其运算将按照浮点型规则来进行,即运算结果的小数部分被保留下来。
答案:D