2 liujiabin1002 liujiabin1002 于 2014.09.04 21:30 提问

为什么结果会不同?请大神指教
c++

#include
using namespace std;

int main() {
unsigned int x;
unsigned int y = 100;
unsigned int z = 50;
x = y - z;
cout << "Difference is: " << x << endl;
x = z - y;
cout << "\nNow difference is: " << x << endl;
return 0;
}

4个回答

u010261322
u010261322   2014.09.04 21:57

计算机内部计算以补码运算。

yang_L925000
yang_L925000   2014.09.05 16:27

无符号整形数据存储,其范围是把0到4294967295按顺序排列成一个“环形”,这样的话,对于0两边的数就是1和4294967295。如果超出了范围,程序也会给出一个结果但这个结果是错误的。依据这个原理在使用中出现了-1,那么程序给出的(错误)结果就是环形中0旁边的数,显然不会是1,只能是4294967295。依次类推。

u013467442
u013467442   2014.09.08 17:53

第一个50,第二个-50,当然不一样了

Jiazhou_Lvguan
Jiazhou_Lvguan   2014.09.09 15:28

请研究一下,补码和数据溢出。

Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!