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

C++ 为什么这个阶乘函数返回int而不是double,c++,function,integer,type-conversion,double,C++,Function,Integer,Type Conversion,Double,该类型在返回之前是一个double-up,此时它被剪裁为整数。为什么会这样?任何帮助都将不胜感激 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; }

该类型在返回之前是一个double-up,此时它被剪裁为整数。为什么会这样?任何帮助都将不胜感激

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; 
}
使用名称空间std;
双fac_计数器=1.0;
整数阶乘(双n){

对于(双i=1.0;i您的返回类型为int将其更改为double

int factorial(double n)
换成

double factorial(double n)
得到int的原因是因为函数的返回类型是int,而需要的是double

我还注意到你的代码有一个奇怪的行为

cout<<factorial(3);

我得到了
6.000000

,因为这是您在函数签名中写的。嗯,有趣的是,即使您将函数类型从
int
更改为
double
,当使用
cout
时,输出是
int
,但当您使用
printf()
时,您会得到一个双值,不知道这是为什么产生的。“我还注意到您的代码有一个奇怪的行为。如果我使用…”请看一下等人。@πάνταῥεῖ, 我试过了
printf("%lf",factorial(3));