为什么这个阶乘函数返回int而不是double

时间:2015-02-20 05:15:41

标签: c++ function integer type-conversion double

在返回之前,类型是双倍的,此时它会被剪切为整数。为什么是这样?任何帮助将不胜感激。

using namespace std;

double fac_counter = 1.0;


int factorial(double n) {

    for (double i = 1.0; i <= n; i++)
    {
        fac_counter = double(fac_counter)*i;
    }
    return fac_counter; 
}

2 个答案:

答案 0 :(得分:0)

您的返回类型为 int 将其更改为 double

答案 1 :(得分:0)

int factorial(double n)

将其更改为

double factorial(double n)

你得到一个int的原因是你的函数的返回类型是int,你想要的是double。

我还注意到你的代码有一种奇怪的行为。如果我使用

cout<<factorial(3);

我似乎得到输出6 但是当我使用

printf("%lf",factorial(3));

我得到6.000000