整数除法 vs 浮点除法

运算符 / 看的是操作数的类型:两端都是整数 → 整除截断;有一端是浮点 → 浮点除法
9 int / 5 int 两端都是 int → 整数除法 1 1.8 的小数被截断 舍弃小数,不四舍五入 9.0 double / 5 int int 被提升为 5.0 有一端是 double → 浮点除法 1.8 保留小数,真除法 9.0/5.0 同理= 1.8 ⚠ 经典陷阱:赋值类型骗不了运算 double x = 9 / 4 ; 第 ① 步 右边先算:9 与 4 都是 int 9 / 4 = 2 整除 → 已经丢掉 0.25 第 ② 步 整数 2 再转成 double 存入 x x = 2.0 不是 2.25!转换救不回已丢的小数 ✓ 正确:让运算时就带浮点 double x = 9.0 / 4; 2.25 double x = (double)9 / 4; 2.25 static_cast<double>(a) / b (a, b 为 int 时)