0

我有这个代码:

int findY ( int x, int r) {

return sqrt(pow(x,2) - pow(r,2));

};

但出于某种原因,intellisense 女士将其标记为错误的语法。我不确定为什么。

4

1 回答 1

2

查看它给出的错误:

1>..\main.cpp(7): error C2668: 'pow' : ambiguous call to overloaded function
1>          C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include\math.h(583): could be 'long double pow(long double,int)'
1>          C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include\math.h(535): or       'float pow(float,int)'
1>          C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include\math.h(497): or       'double pow(double,int)'
1>          while trying to match the argument list '(int, int)'

基本上,这是一个模棱两可的过载。因此,您需要将其转换为澄清:

return sqrt(pow((double)x,2.) - pow(((double)r,2.));

不仅如此,您真的打算将返回类型设为 int 吗?

于 2013-03-27T00:02:49.607 回答