C语言 pow 函数重载调用错误解决方法
#include <stdio.h>
#include <math.h>
int factorial(int n) { int result = 1,i; for ( i = 1; i <= n; i++) { result *= i; } return result; }
int main() { int n,i,k; float x,re=0,m;
scanf("%f %d", &x,&n);
for (i=1;i<=n;i++)
{
m=pow(-1, i-1)*pow(x,2*i-1) / factorial(2*i-1);
re=re+m;
}
printf("%.8f",re);
return 0;
}
这个代码 软件对我说'pow': 对重载函数的调用不明确,怎么办?
这个错误是因为在调用 pow 函数时,传入的参数类型不明确,导致编译器无法确定使用哪个重载版本的 pow 函数。解决方法是明确指定参数的类型。
在代码中,将 pow 函数调用处的参数类型改为相应的类型即可。例如,将 pow(-1, i-1) 改为 pow(-1.0, i-1.0),将 pow(x,2i-1) 改为 pow(x,2.0i-1.0)。
修改后的代码如下:
#include <stdio.h>
#include <math.h>
int factorial(int n)
{
int result = 1,i;
for ( i = 1; i <= n; i++) {
result *= i;
}
return result;
}
int main()
{
int n,i,k;
float x,re=0,m;
scanf("%f %d", &x,&n);
for (i=1;i<=n;i++)
{
m=pow(-1.0, i-1.0)*pow(x,2.0*i-1.0) / factorial(2*i-1);
re=re+m;
}
printf("%.8f",re);
return 0;
}
这样修改后,代码应该可以正常编译和运行。
原文地址: https://www.cveoy.top/t/topic/o7X5 著作权归作者所有。请勿转载和采集!