unsigned + int 的结果

C++语言 码拜 4年前 (2015-11-28) 154次浏览
		unsigned int i=8;
		int j=-1;
cout<<i+j<<endl;
cout<<j+i<<endl;

猜猜结果是什么,
本人想到了前半步,却没有想到后半步。
本来本人知道j也是要转成unsigned的算结果
所以应该结果是个很大的整数,可结果却出乎意料
是 7。
怎么解释呢?

解决方案:10分
这个结果当然是7啊
有符号的与无符号的运算,还是会按有符号运算的(不会将有符号的转为无符号的)
但结果会转为无符号的
无论是8+(-1)还是(-1)+8结果都是7
假如是
cout << j-i << endl; // -1-8=-9结果转为无符号的为4294967287
cout << i-j << endl; //8-(-1)结果为9
解决方案:10分
-1转成无符号数后是无符号数能表示的最大值,你在进行加运算,就溢出了,加1得到的结果是0,加2得到的是1………

CodeBye 版权所有丨如未注明 , 均为原创丨本网站采用BY-NC-SA协议进行授权 , 转载请注明unsigned + int 的结果
喜欢 (0)
[1034331897@qq.com]
分享 (0)