《C++ Primer》第五版课后习题解答_第四章(3)(34-38)

时间:2022-08-20 00:15:45

系统环境: 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。