当两个正的
更新 引用来自链接1: “在二进制补码求和中检测溢出的规则很简单: 1. 如果两个正数的和产生负结果,则和已经溢出。 2. 如果两个负数的和产生正结果,则和已经溢出。 3. 否则,总和未溢出。”
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: “在二进制补码求和中检测溢出的规则很简单: 1. 如果两个正数的和产生负结果,则和已经溢出。 2. 如果两个负数的和产生正结果,则和已经溢出。 3. 否则,总和未溢出。”
unchecked
上下文中使用它,这是很危险的。我的回答重点是将其变成显式的unchecked
上下文。 - user743382