练习4.36、4.37

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。

原文地址:https://www.cnblogs.com/Dark-King/p/9451634.html