求教一个看起来简单的问题(谢谢)

kin988g 2013-04-19 12:22:12
unsigned int a = 2;
int b = 5;
cout<<a-b;

求教输出的结果?为什么?谢谢
...全文
265 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
nirvana_newbie 2013-04-20
  • 打赏
  • 举报
回复
引用 9 楼 kin988g 的回复:
引用 7 楼 nirvana_newbie 的回复:a在内存中的二进制存储是0000 0000 0000 0000 0000 0000 0000 0010, b在内存中的二进制存储是0000 0000 0000 0000 0000 0000 0000 0101, 如果a是有符号的int型,那么a-b后得到1111 1111 1111 1111 1111 1111 11……
都建议你去看原码补码的知识了,怎么就那么怕学新知识呢?而且原码补码就简单的两三页纸而已,那么怕看书吗?
kin988g 2013-04-20
  • 打赏
  • 举报
回复
引用 7 楼 nirvana_newbie 的回复:
a在内存中的二进制存储是0000 0000 0000 0000 0000 0000 0000 0010, b在内存中的二进制存储是0000 0000 0000 0000 0000 0000 0000 0101, 如果a是有符号的int型,那么a-b后得到1111 1111 1111 1111 1111 1111 1111 1101(如果不明白,可以去看原码补码反码的相……
谢谢大家,能具体的说一下a-b怎么得到1111 1111 1111 1111 1111 1111 1111 1101吗?非常感谢!
kin988g 2013-04-20
  • 打赏
  • 举报
回复
引用 10 楼 nirvana_newbie 的回复:
引用 9 楼 kin988g 的回复:引用 7 楼 nirvana_newbie 的回复:a在内存中的二进制存储是0000 0000 0000 0000 0000 0000 0000 0010, b在内存中的二进制存储是0000 0000 0000 0000 0000 0000 0000 0101, 如果a是有符号的int型,那么a-b后得到1111 1111 111……
谢谢,我懂了,谢谢!
mujiok2003 2013-04-19
  • 打赏
  • 举报
回复
2. 避免混合类型

   int a = 2;
  int b = 5;
  std::cout<< a-b;
mujiok2003 2013-04-19
  • 打赏
  • 举报
回复
解决办法 1.

   int a = 2;
  unsigned int b = 5;
  std::cout<<(int)(a-b);
2. 避免混合类型

   int a = 2;
   int b = 5;
  std::cout<<(int)(a-b);
derekrose 2013-04-19
  • 打赏
  • 举报
回复
unsigned类型转换 是隐式的
mujiok2003 2013-04-19
  • 打赏
  • 举报
回复
看看这个
hugett 2013-04-19
  • 打赏
  • 举报
回复
4294967293。。因为结果为一个unsigned int,而2-5=-3下溢出了,结果是2^32-3
Athenacle_ 2013-04-19
  • 打赏
  • 举报
回复
-3。以无符号输出。。 看起来就像是4294967293
nirvana_newbie 2013-04-19
  • 打赏
  • 举报
回复
a在内存中的二进制存储是0000 0000 0000 0000 0000 0000 0000 0010, b在内存中的二进制存储是0000 0000 0000 0000 0000 0000 0000 0101, 如果a是有符号的int型,那么a-b后得到1111 1111 1111 1111 1111 1111 1111 1101(如果不明白,可以去看原码补码反码的相关知识)。这么多111组成的二进制,在有符号数中,第一个1表示负数,所以就是-3. 但是现在是无符号,所以第一个1就不表示负数了。于是这便是一个正数,用二进制加法求十进制的话,这个数就等于上面2楼3楼的前辈说的4294967293
赵4老师 2013-04-19
  • 打赏
  • 举报
回复
电脑内存只是一个一维二进制字节数组及其对应的二进制地址; 人脑才将电脑内存中的这个一维二进制字节数组及其对应的二进制地址的某些部分看成是整数、有符号数/无符号数、浮点数、复数、英文字母、阿拉伯数字、中文/韩文/法文……字符/字符串、函数、函数参数、堆、栈、数组、指针、数组指针、指针数组、数组的数组、指针的指针、二维数组、字符点阵、字符笔画的坐标、黑白二值图片、灰度图片、彩色图片、录音、视频、指纹信息、身份证信息……

64,654

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

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