0

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

int m = sqrt( n );

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

4

1 回答 1

4

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

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

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

double m = sqrt((double) n);

你得到的错误仅仅意味着编译器不能自动sqrt为你选择一个函数——你传递的整数需要转换为浮点类型,编译器不知道sqrt它应该选择哪个浮点类型和函数。

于 2011-03-27T16:39:50.720 回答