【发布时间】:2021-12-31 09:51:36
【问题描述】:
为什么
result = static_cast<double>(1 / (i+1))
在 C++ 中返回 int 以及为什么会这样做
result = 1 / (i+static_cast<double>(1))
返回double?特别是为什么在+-操作之后强制转换足以产生double。为什么在+ 之前或分子中也不需要它? static_cast 是首选的投射方式吗?
代码:
double harmonic(int n) {
double result = 0;
for (int i = 0; i < n; i++) {
result += 1 / static_cast<double>(i+1);
}
return result;
}
【问题讨论】:
标签: c++ types casting arithmetic-expressions