x******3 发帖数: 1 | 1 int sam = INT_MAX;
sam += 1;
cout<< sam;
测试溢出,为什么输出是-2147483648而不是 -0呢?
我的意思是 sam原来是2147483647 = 1111 1111 1111 1111 1111 1111 1111 1111, 加
1不是变成 1 0000 0000 0000 0000 0000 0000 0000 0000 = (-0)?? | d******b 发帖数: 73 | | v****r 发帖数: 11 | | o*******r 发帖数: 73 | | b********6 发帖数: 35437 | 5 signed int 第一个bit是符号,你给的数是2^31而不是2^32 | n*****n 发帖数: 5277 | 6 举个例子,4位二进制补码的表示范围是从-8(1000)到+7(0111),你把+7(0111)
再加1,正好溢出得到-8(1000) | g****y 发帖数: 2810 | 7 正解,哪里有-0
【在 d******b 的大作中提到】 : 反码, 补码,看看。那个就是 INT_MIN
| p**r 发帖数: 5853 | |
|