c程序设计 对重载函数的调用不明确是什么意思

来源:百度知道 编辑:UC知道 时间:2024/07/02 06:24:32
#include<stdio.h>
#include<math.h>
void main()
{
int n,j=1;
double s=0;
int s11,s12,s21,s22,s31,s32;
scanf("%d",&n);
do
{
s11=pow((-1),j-1);
s12=pow(2,j);
s21=pow(2,j);
s22=pow((-1),j);
s31=pow(2,j+1);
s32=pow((-1),j+1);
s=s+s11*s12/(s21+s22)/(s31+s32);
j++;
}
while(j<=n);
printf("s=%lf",s);
}

error C2668: “pow”: 对重载函数的调用不明确

你用的什么编译器。。

自己去翻math.h好了,肯定里面有声明过好几个不同的pow函数原型
你的这几个调用里面有好几个是直接用常量来的,编译器不能确定它们的数据类型,也就不知道该用哪个重载的函数,学过C++以后应该会明白

学C就用专门的C编译器吧,古老的Turbo C 2.0
用C++编译器难免出这种让你没概念的错误

最常见的应该这个
double pow(double _X, double _Y);

你在调用里面都加上强制类型转换试试
s11=(int)pow((double)(-1),(double)(j-1));

在math.h中pow的函数原型是double pow( double x, double y );
它要求参数及返回值都是double类型,所以你那样调用肯定造成部分
数据丢失,改一下就可以了