C语言数据溢出问题

DecKen_H DecKen_H 墨衍会员 · AI 创作全网分发 墨衍智能分发 通过墨衍一键同步至各平台 可同步平台 CSDN微信公众号微博知乎掘金百家号博客园抖音小红书 你的文章也可以这样分发 墨衍会员 ¥399起/年,写一次发全网 我也要 + 加入社区
今天遇到一个关于数据溢出的问题。先贴出代码
#include <stdio.h>
int main(void)
{
short int a=32767,b=32767,c;
a=a+b; //下面三行代码是实现两数交换的功能
b=a-b;
a=a-b;
c=sizeof(short int);
printf("a=%d,b=%d\n",a,b);
printf("sizeof=%d",c);
return 0;
}

编译环境vs2008,short int的是2字节,按照公式计算,short int 能表示最大的正数是32767(2^15-1),看第五行代码a=a+b;调试到该行代码时,a已经变成了-2了(见图一),很明显a已经溢出了,但是最后结果却能得出正确的答案(见图二)。求大婶
图一



图二
...全文

相关推荐

评论 6
收藏 已收藏
分享
返回顶部
DecKen_H
C语言 70,039 成员 243,237 内容