4.36:假定 i 是int类型,d是double类型,书写表达式 i*=d 使其执行整数类型的乘法而非浮点类型的乘法。
Ans:i*=static_cast<int>(d);
4.37:用命名的强制类型转换改写下列旧式的转换语句。
int i; double d; const string *ps; char *pc; void *pv;
(a)pv=(void *)ps; (b) i= int(*pc)
(c)pv = &d; (d)pc = (char *) pv;
Ans:a)pv=static_cast<void *>(const_cast<string *> (ps)); 对于底层const,需要使用const_cast的去const性质
b) i= static_cast<int>(*pc);
c)pv=static_cast<void *>(&d);
d)pc=static_cast<char *>(pv);
4.38:说明下面这条表达式的含义。
double slope = static_cast<double>(j/i);
Ans:将j/i的结果进行命名强制类型转换成double类型,然后赋值给double类型的变量slope。