一个简单的C++问题
#include<iostream>usingnamespacestd;intmain(){unsignedintx,y=100,z=50;x=y-z;cout<<"x=...
#include <iostream>
using namespace std;
int main()
{
unsigned int x,y=100,z=50;
x=y-z;
cout<<"x=y-z "<<x<<endl;
x=z-y;
cout<<"x=z-y "<<x<<endl;
}
x=z-y 中x为什么是4294967246 展开
using namespace std;
int main()
{
unsigned int x,y=100,z=50;
x=y-z;
cout<<"x=y-z "<<x<<endl;
x=z-y;
cout<<"x=z-y "<<x<<endl;
}
x=z-y 中x为什么是4294967246 展开
3个回答
展开全部
你的x是unsigned int类型的,即只能≥0,根据内存分配原则,它溢出即从尾部重新开始~
如果x是int类型的,既不会出现这种情况啦
如果x是int类型的,既不会出现这种情况啦
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
内存中如果有一段10000001(二进制),如果把他当成有符号的数,那么第一个1是负号,这个数值就应该是 -1,如果当成无符号数,那数值应该是129。
无符号的50减去无符号的100,应该是个负数,但是这个负数在内存中是当成无符号的正数来取值的
无符号的50减去无符号的100,应该是个负数,但是这个负数在内存中是当成无符号的正数来取值的
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询