系统环境: windows 10 1703
编译环境:Visual studio 2017
4.34
(a) fval 转换成 bool
(b) ival 先提升成 float,和 fval 相加后提升成 double 赋给 dval
(c) cval 提升成 int,和 ival 相加后再提升为 double 和 dval 相加
4.35
(a) 发生了。‘a’ 先提升为 int 和 3 相加,在转换成 char 赋给 cval
(b) 发生了,ival 先提升为 float,和 1.0 相乘,然后转换成 unsigned int,和 ui 做减法,其结果转换成 float 赋给 fval
(c) ui 转换成 float 和 fval 相加,其结果转换为 double 赋给 dval
(d) ival 提升成 float 和 fval 相加。其结果再提升为 double 和 dval 相加。再将其结果转换为 char 赋给 cval
4.36
i *= static_cast<int>(d)
4.37
// a (下方的表达式不能拆分成两个表达式,会报错)
pv = static_cast<void*>(const_cast<string*>(ps));
// b
i = static_cast<int>(*pc);
// c
pv = static_cast<void*>(&d);
// d
pc = static_cast<char*>(pv);
4.38
先计算 (j / i) 的值(若 i, j 均为 int,则计算结果舍去小数成为 int 类型),将结果强制转换为 double 类型,然后赋给 slope。