無符號整數餘寫以下代碼:在C++
#include <iostream>
using namespace std;
int main() {
unsigned int i=1;
i=i-3;
cout<<i;
return 0;
}
輸出是垃圾值,這是可以理解的。
現在,我寫了下面的代碼:
#include <iostream>
using namespace std;
int main() {
unsigned int i=1;
i=i-3;
i=i+5;
cout<<i;
return 0;
}
現在輸出3.這裏發生了什麼?垃圾價值是如何被5添加的?
它不是垃圾,值下溢到無符號整數最大值 - 2,然後你添加5到這個,所以它變得積極3 – EdChum
查看:https://en.wikipedia.org/wiki/Two%27s_complement – Meccano
無符號整數以明確定義的方式溢出(不像有符號整數)。相關問題:http://stackoverflow.com/questions/16056758/cc-unsigned-integer-overflow,http://stackoverflow.com/questions/9193880/overflowing-of- unsigned-int –