下面的代码片段VS2010无法编译它有什么问题?
int m = sqrt( n );
(我试图确定整数是否为素数......)
答案 0 :(得分:5)
您需要将特定的浮点类型传递给sqrt
- 没有整数重载。使用例如:
long double m = sqrt(static_cast<long double>(n));
当你包括cmath
而不是math.h
时,我假设你想要c ++。对于C,您需要使用例如:
double m = sqrt((double) n);
您得到的错误只是意味着编译器无法自动为您选择sqrt
函数 - 您传递的整数需要转换为浮点类型,并且编译器不知道哪个浮点类型和sqrt
它应该选择的功能。