关于给unsigned int 给负值的计算问题

icegulll 2007-11-14 02:31:10
#include <iostream>
int main(void)
{
using namespace std;
int a = 1;
unsigned int b = -1;
cout << (a + b) << endl;
cout << b << endl;
system("pause");
return 0;
}

--------------------------------------------------------------
#include <iostream>
int main(void)
{
using namespace std;
int a = 1;
unsigned int b = -2;
cout << (a + b) << endl;
cout << b << endl;
system("pause");
return 0;
}



其中第一个结果是:
0
4294967295


第二个结果是
4294967295
4294967294

我们都知道int的范围是:-2147483648~~2147483647
unsigned int的范围是:0~4294967295
那为什么第一个的输出的结果不是:
4294967296
4294967295
请高手解答一下,迷惑中!
...全文
231 1 打赏 收藏 转发到动态 举报
写回复
用AI写文章
1 条回复
切换为时间正序
请发表友善的回复…
发表回复
xugang_2001 2007-11-14
  • 打赏
  • 举报
回复
unsiged int b = -1;
因为-1在计算机是以补码形式存在,-1的补码为:0x11111111
int a = 1=0x00000001

所以0x11111111+0x00000001 = 0x(1)00000000因为最后一个进位越界了,所以被抛弃,结果就是0了

33,319

社区成员

发帖
与我相关
我的任务
社区描述
C/C++ 新手乐园
社区管理员
  • 新手乐园社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧