请问我这段求阶乘的代码哪里错了

img

这是我的代码

img

求哪错了
而且为什么用不了double定义sum变量呢
什么时候是系统默认科学记数法表示呢
只有double还是都可以(在数字大的情况下)

你用int类型来计算就溢出,应该用double类型来计算

#include <iomanip>
#include <iostream>

int main() {
  double sum = 0.0, f = 1.0;
  for (int i = 1; i <= 30; i++) {
    f *= i;
    sum += f;
  }
  std::cout << std::scientific << std::setprecision(2) << sum << std::endl;
  return 0;
}

把sum,m,i都定义成double,然后输出用printf(".2lf",变量名)

sum你定义的是int,改为double