#include <cmath> </cmath>

时间:2011-03-27 16:32:49

标签: visual-studio-2010 cmath

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

int m = sqrt( n );

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

1 个答案:

答案 0 :(得分:5)

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

long double m = sqrt(static_cast<long double>(n));

当你包括cmath而不是math.h时,我假设你想要c ++。对于C,您需要使用例如:

double m = sqrt((double) n);

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