报错:
可能是“long double sqrt(long double)”
或 “float sqrt(float)”
或 “double sqrt(double)”
#include <iostream>
#include <math.h>
using namespace std;
bool isTriangular( int n )
{double k;
k= sqrt((n*8+1));
isTriangular((k-1)/2==int(k-1)/2);
}
int main()
{
int xiaxian;int shangxian;
cin>>xiaxian>>shangxian;
if(xiaxian>shangxian)
{int x;
x =xiaxian;
xiaxian=shangxian;
shangxian=x;}
int n;
for(int n = max(0,xiaxian);n<=shangxian+0.1;++n)
if(isTriangular(n))
cout<<n<< " is a triangular number." <<endl;
return 0;
}
bool isTriangular( int n )
{double k;
k =sqrt((double)n*8+1);
isTriangular((k-1)/2-int((k-1)/2)==0);
这样好了,但是又出现了新的问题,
isTriangular”: 如递归所有控件路径,函数将导致运行时堆栈溢出
error C4716: “isTriangular”: 必须返回一个值
那是你函数定义的问题。你函数返回类型是bool类型。就是返回“真”“假”2种类型。但是返回的不是。
c++“sqrt”:对重载函数的调用不明确?
c++语言中,sqrt函数的原型包括double, float, long三种类型。若n为int类型,由于可以转换为上述任意一种,编译器在调用sqrt函数时无法确定具体转换目标,从而导致了“sqrt: 对重载函数的调用不明确”的提示。解决这一问题,有以下两种方法:首先,明确声明n的类型为sqrt函数的原型类型之一,例如:double n...
求大神解答为什么老说我的“sqrt”: 对重载函数的调用不明确
_Check_return_ _CRT_JIT_INTRINSIC double __cdecl sqrt(_In_ double _X);首先重载:一个是函数个数不一致,一个是函数类型不一致;你上面的传入的是一个int 类型,原本内部的是一个double类型。
C++中“swap2”: 对重载函数的调用不明确
楼主,你代码没问题,可能是编译器的问题,我用的VS2010运行正常 满意请采纳哦!换一个功能好点的编译器吧
...却不能用sqrt函数,提示:对重载函数的调用不明确??
C语言是没有重载的,C++才有,你应该是用C++的编译器来写C语言吧 在C++中sqrt有两个重载函数,一个参数是double,另一个是float 由于你传的参数是int在默认的隐式类型转换中int可以转换成float也可以转换为double,编译器就不知道你想调用哪一个。用强制的类型转换可以解决这个问题。
提示sqrt对重载函数调用不明确
这说明存在其他同名函数啊,你检查下有没有同名,系统产生歧义的时候才会出现这条提示的
visual c++中error C2668: 'sqrt' : ambiguous call to overloaded funct...
你的参数不明确,重载不明确,改为sqrt(2.0);试试
C++中开方出现错误
这要看什么……sqrt只有接受三种精度的浮点数的函数重载,而int转换到三种浮点数的优先级相同,所以会报有多个函数的重载形式符合要求的错误,显式指定一下k=int(sqrt ((float)m));或者k=int(sqrtf (m));就是了……
C++中“swap2”: 对重载函数的调用不明确
楼主,你代码没问题,可能是编译器的问题,我用的VS2010运行正常 满意请采纳哦!换一个功能好点的编译器吧
用c++编程:求正数的平方根
你把你定义的 int i;换成double i;这样就不会显示“sqrt对重载函数调用不明确”再像这样在输出的时候添加一个(int)sqrt(i)就可以实现了。
C++ 无法确定需要哪个重载函数"endl"实例
cout<<a<<"、";endl;} ;endl 和\\n都有换行的功能,这一句endl的前面多了分号,应为“<<”;函数重载是指在同一程序中,允许定义多个同名函数,这些同名函数可以有不同的返回类型,参数类型、参数个数和不同的函数功能。else if (20<=a<=60)可以这样:else if (a>=20 && a<=60)...