是否应该避免这种从 int 到 double 的静态转换?

Alw*_*ing 3 c++ casting

考虑:

int total = 14; // something for which double does not make sense
int nPeople = 5;
double perCapita = static_cast<double>(total) / nPeople; // should this cast be avoided?
Run Code Online (Sandbox Code Playgroud)

在这种情况下应该避免铸造吗?是写好1.0 * total / nPeople还是别的好?

dar*_*une 5

在这种情况下应该避免铸造吗?是写 1.0 * Total / nPeople 还是其他比较好?

乘以 1.0 并不能明确其意图。这里的显式转换更加清晰,并且是执行此操作的事实上接受的方式。如果我们有某种可以显式调用的模板函数(不被调用std::div- 因为这是一种不同类型的除法),那就太好了 - 但可惜我们没有,直到那时 - 就这样static_cast<double>了!