c++ - 为什么使用两个 pow() 内部计算的 sqrt() 在智能感知中是错误的

标签 c++ pow sqrt

我有这个代码:

int findY ( int x, int r) {

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

};

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

最佳答案

看看它给出的错误:

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 吗?

关于c++ - 为什么使用两个 pow() 内部计算的 sqrt() 在智能感知中是错误的,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15649641/

相关文章:

c++ - 如何检查 int 变量是否包含合法(非陷阱表示)值?

c - Raspberry PI 中的幂函数

c# - Pow(x,y) 函数的工作流程是什么?

c - 我无法计算 0<= number <1 的平方

java - 大整数、平方根、Java 和 C : What does this line do?

c++ - 指针索引 : Getting Unexpected Values

C++ 在模板类中重载 operator+

c++ - 旧包中的 C/C++ 静态字符串

不能在幂函数中使用常数

c - 以最少的指令获得最快的整数平方根