一句话理解
强制类型转换是你明确要求:把这个值按另一种类型来看。
为什么要学
整数相除想保留小数、或 double 收成 int,都要用到。
讲解
写法:(int)x、int(x)、static_cast<int>(x)。初学用前两种即可。
(double)a / b 会按小数除。若写成 (double)(a / b),则先整数除再转,小数已经丢了。
转成更窄的类型会截断:(int)3.9 是 3,不是四舍五入。
例子
int a = 5, b = 2;
cout << a / b << " ";
cout << (double)a / b;
输出:
2 2.5
整数除法先丢掉小数。把其中一个变成 double,才会得到 2.5。
常见错误
- 括号位置错:先整除再转换。
- 以为转成 int 会四舍五入。