一道C++语言的问题,为什么最后的输出是一个很怪的数字

#include<iostream>
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;

}

因为你定义的x是unsigned int类型,无符号整型,也就是非负数,所以z-y的结果虽然是-50但是会被转化为对应的无符号整数也就是4294967246
温馨提示:内容为网友见解,仅供参考
第1个回答  2014-03-05
输出的数应该很大,因为你是将负数赋给unsigned类型,而系统计算时并不知道这是一个负数。
第2个回答  2014-03-05
16位系统中一个int能存储的数据的范围为-32768~32767,而unsigned能存储的数据范围则是0~65535。
X为unsigned int ,懂了吗
第3个回答  2014-03-05
把题目放出来呀 =。=
相似回答