#include <cmath>

Jos*_*hua 0 visual-studio-2010 cmath

下面的代码片段有什么问题,VS2010无法编译它?

int m = sqrt( n );
Run Code Online (Sandbox Code Playgroud)

(我试图确定整数是否为素数......)

Eri*_*rik 5

您需要传递特定的浮点类型sqrt- 没有整数重载.使用例如:

long double m = sqrt(static_cast<long double>(n));
Run Code Online (Sandbox Code Playgroud)

因为你cmath不包括math.h我假设你想要c ++.对于C,您需要使用例如:

double m = sqrt((double) n);
Run Code Online (Sandbox Code Playgroud)

您得到的错误只是意味着编译器无法自动sqrt为您选择一个函数 - 您传递的整数需要转换为浮点类型,并且编译器不知道sqrt它应该选择哪个浮点类型和函数.