这个C++程序怎么得不到正确结果啊 急急急!!!!

来源:百度知道 编辑:UC知道 时间:2024/06/14 05:46:25
#include<iostream>
using namespace std;
int main()
{
unsigned int x;
unsigned int y=100;
unsigned int z=50;
x=y-z;
cout<<"different is :"<<x<<endl;
x=z-y;
cout<<"new different is:"<<x<<endl;
return 0;
}

x是无符号整数,对吧,既然是无符号整数那么x = 50-100 = -50,怎么用无符号数表示呢????
int 最大值是65536,
那么usigned int 最大值是4294967296,
这是最大值,如果超过,了,比如-50就是用4294967296-50=4294967246,结果很正确啊
只是不是你想要的结果罢了,
你可能需要尝试改变数据类型
才能达到你要的结果
别忘记加分啊,如果觉得好的话

unsigned 统统去掉。
现在的写法对负数无法处理,变成一个很大的数了。

32位unsigned int数值范围:0 ~ 2^32-1,是不能存放负数的,你结果得出个负数,存放的时候就变成了一个很大的数。你变成int来用,结果就对了。

不要用unsigned int这个数据类型了,用个范围大点的

x的数据类型应该改为int,而不是unsigned int,因为x有可能为负数。

去掉unsigned,否则无法处理负数。