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