这个C++怎么了,我不会啊

来源:百度知道 编辑:UC知道 时间:2024/06/21 01:18:11
#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;
}

z-y=-50 = 0xFFFFFFCE
因为x定义的是无符号整型 所以就变成了一个很大的正数

你想问什么?不说出来我们都不知道你想要什么答案

要想x=z-y正确就要把unsigned int x 改成int x;

z-y=-50是负数
而x是无符号整数 即正数 当然会得不到结果
应该把usigned int x改成int x

不行啊,你把x定义成了无符号数,z-y 是个负数,也就是有符号数。结果就会出错。直接定义int就行了,不用unsigned