【发布时间】:2016-07-21 14:23:09
【问题描述】:
当添加两个正的Int32 值且理论结果大于Int32.MaxValue 时,我可以指望溢出的值始终为负吗?
我的意思是这样做是为了在不使用检查的上下文和异常处理的情况下检查溢出(就像这里建议的那样:http://sandbox.mc.edu/~bennet/cs110/tc/orules.html),但是这种行为是否合理?
到目前为止,我读到的是 C# 定义行为中的有符号整数溢出 (Is C#/.NET signed integer overflow behavior defined?)(与 C/C++ 相比),Int32 是两个补码,所以我会感谢有更好理解的人这个主题比我来验证这一点。
更新
引用链接 1:
检测二进制补码和溢出的规则很简单:
- 如果两个正数之和得出负结果,则和已溢出。
- 如果两个负数之和产生正结果,则和溢出。
- 否则,总和没有溢出。
【问题讨论】:
标签: c# integer-overflow