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

我知道,Int32.MaxValue * Int32.MaxValue将产生一个大于Int32的数字;但是,这句话不应该提出某种例外吗?

当我做一些像IF(X * Y> Z)这样的东西都是Int32的时候,我碰到了这个. X和Y足够大,你从X * Y得到一个虚假值.

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

最佳答案
您已禁用项目中的溢出检查.使用选中模式On会抛出异常.

转载注明原文:c# – 为什么Int32.MaxValue * Int32.MaxValue == 1? - 代码日志