即使会溢出,也能得到正确的结果

有符号数的溢出本就是不确定的(标准未定义),编译器不同可能有不同的实现。

但即使是这样(上面两种方式最后结果都一样),上面的结果也是正确的。

复杂的数学推倒就不打算研究了。

通俗理解就是,上面的语句,即使溢出去,也会溢回来。

链接:https://www.nowcoder.com/questionTerminal/55bf0d019af549a48f5dc72fc9221377
来源:牛客网

举个栗子
交换-5, -7。 以4bit为例。
-5 = 1011 (补码)    -7 = 1001 (补码)
(-5)+ (-7)= 10100=0100=4 (溢出后为4)
4-(-7)= 4 +7=0100 + 0111 = 1011 = -5的补码
4-(-5)= 4 + 5 = 0100 + 0101 = 1001 = -7的补码

 

posted @ 2018-09-16 12:00  Crystal_Guang  阅读(562)  评论(0编辑  收藏  举报