32 位定点溢出
我正在 32 位 Windows PC 上进行一些“早期计算”,并研究其限制。
现在,2**32 是 4,294,967,296,我发现这
4294967290 + 5
完全没问题,而且
4294967290 + 6
完全可以溢出。
让我困惑的是
429496729 * 10
,尽管产品 4294967290 在范围内,但还是溢出了。
有人感兴趣吗?
I'm doing some 'early computing' on a 32-bit Windows PC, and looking at the limits.
Now, 2**32 is 4,294,967,296, and I find that
4294967290 + 5
is perfectly OK, and
4294967290 + 6
quite properly overflows.
What puzzles me is that
429496729 * 10
overflows, although the product, 4294967290, is in range.
Anyone interested?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
在没有任何代码的情况下,我猜
429496729
会隐式键入为有符号整数,而4294967290
就太多了。In the absense of any code, I'd guess
429496729
gets implicitly typed as signed integer, for which4294967290
is too much.