gpt4 book ai didi

c# - 为什么 Int32.MaxValue * Int32.MaxValue == 1?

转载 作者:太空狗 更新时间:2023-10-29 22:02:22 26 4
gpt4 key购买 nike

我知道,Int32.MaxValue * Int32.MaxValue 会产生一个大于 Int32 的数字;但是,这个声明不应该引发某种异常吗?

我在执行诸如 IF (X * Y > Z) 之类的操作时遇到了这个问题,其中所有内容都是 Int32XY 足够大,您可以从 X * Y 得到一个伪造的值。

为什么会这样以及如何解决这个问题?除了将所有内容都转换为 Int64

最佳答案

因为 int32 将结果限制为 32 位。

因此,如果您查看字节级别的数学运算。

FFFFFFFF * FFFFFFFF = FFFFFFFE00000001

如您所见,最低的 4 个字节 = 1。

关于c# - 为什么 Int32.MaxValue * Int32.MaxValue == 1?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3001042/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com