问题描述
- 为什么结果会不同?请大神指教
- #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;
}
解决方案
计算机内部计算以补码运算。
解决方案二:
无符号整形数据存储,其范围是把0到4294967295按顺序排列成一个“环形”,这样的话,对于0两边的数就是1和4294967295。如果超出了范围,程序也会给出一个结果但这个结果是错误的。依据这个原理在使用中出现了-1,那么程序给出的(错误)结果就是环形中0旁边的数,显然不会是1,只能是4294967295。依次类推。
解决方案三:
第一个50,第二个-50,当然不一样了
解决方案四:
请研究一下,补码和数据溢出。
时间: 2024-10-30 01:03:08