#include;

发布于 2024-10-27 11:04:40 字数 109 浏览 2 评论 0原文

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

int m = sqrt( n );

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

What is wrong with the code snippet below that VS2010 wouldn't compile it?

int m = sqrt( n );

( I am trying to ascertain whether an integer is prime... )

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

深海夜未眠 2024-11-03 11:04:40

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

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

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

double m = sqrt((double) n);

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

You need to pass a specific floating point type to sqrt - there's no integer overload. Use e.g:

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

As you include cmath not math.h I'm assuming you want c++. For C, you'll need to use e.g:

double m = sqrt((double) n);

The error you get simply means that the compiler cannot automatically select a sqrt function for you - the integer you pass needs to be converted to a floating point type, and the compiler doesn't know which floating point type and sqrt function it should select.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文