上溢的区别?和存储的关系

colrry 2008-04-30 09:32:51
#include <stdio.h>
int main()
{
signed short int a;
a=32767;
a+=1;
printf("a=%d\n",a);
system("pause");
return 0;
}
//明显上溢 输出"a=-32768" 为什么?

#include <stdio.h>
int main()
{
unsigned short int a;
a=65535;
a+=1;
printf("a=%d\n",a);
system("pause");
return 0;
}
//继续上溢 输出"a=0" 为什么?
...全文
104 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
kuyesuifeng 2008-04-30
  • 打赏
  • 举报
回复
signed short int a=32767:
a:0111 1111 1111 1111
a+1:1000 0000 0000 0000//转换成十进制有符号整型即为:-32768

unsigned short int a=65535;
a:1111 1111 1111 1111
a+1:1 0000 0000 0000 0000//其中第一位的1由于超过了十六位所以被丢弃,就变成了0
Erorr 2008-04-30
  • 打赏
  • 举报
回复
一个是signed short 范围是-32768 - 32767
一个是unsigned short 范围是0 - 65535
所以加1都会上溢

69,382

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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