Почему sqrt (), в котором используется вычисление двух элементов pow () внутри, неверно в intellisense

У меня есть этот код:

int findY ( int x, int r) {

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

};

Но по какой-то причине Ms intellisense помечает его как неправильный синтаксис. Я не уверен почему.

0

Решение

Посмотрите на ошибку, это дает:

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?

2

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]