练习4.34
根据本节给出的变量定义,说明在下面的表达式中将发生什么样的类型转换:
(a) if(fval)
(b) dval = fval + ival;
(c) dval + ival * cval;
需要注意每种运算符遵循的做结合律还是右结合律。
解答:
(a) float -> bool
(b) int ->float, float -> double
(c) char->int, int->double
练习4.35
假设有如下的定义,
char cval; int ival; unsigned int ui; float fval; double dval;
请回答在下面的表达式中发生了隐式类型转换吗?如果有,指出来。
(a) cval = 'a' + 3;
(b) fval = ui - ival * 1.0;
(c) fval = ui * fval;
(d) cval = ival + fval + dval;
解答:
(a) 没有,这个直接和字面常量相加。
(b) 有,uint -> double, double -> float
(c) 有,uint ->float
(d) 有,float -> double, int -> double, double -> char