什么是数据溢出

A1407031 2014-09-11 06:38:53
如题如题如题如题如题
...全文
2382 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
damaoshan 2014-09-12
  • 打赏
  • 举报
回复
溢出就是,你申请了一块地盖房子,但是盖着盖着你侵占了地块之外的空间 别人难道不会对你有意见?
starytx 2014-09-12
  • 打赏
  • 举报
回复
数据类型都有其可以表示的最大值,给这个类型的变量超过他最大值的值,就产生了溢出,对于溢出的处理不同的编译器处理不同,所以其结果一般是未知的,要防止这种情况发生
aa5566f4 2014-09-12
  • 打赏
  • 举报
回复
每一個變量都有範圍不可超出
小白yige 2014-09-12
  • 打赏
  • 举报
回复
推荐你看下《深入理解计算机系统》这本书有相关部分深刻描述了计算机的数据溢出和数据存储的关系,看完后你什么都明白了。
tuke2010 2014-09-12
  • 打赏
  • 举报
回复
楼上都说完了》》》》》》》》》》
赵4老师 2014-09-12
  • 打赏
  • 举报
回复
//有符号整形a和b,如何判断a+b是否溢出
#pragma warning(disable:4035)
#include <stdio.h>
int ifo_add(int a,int b) {
    __asm {
        mov eax,a
        add eax,b
        jo  overflowed
        xor eax,eax
        jmp no_overflowed
overflowed:
        mov eax,1
no_overflowed:
    }
}
int main() {
    int a,b;

    a=          1;b= 2;printf("%11d+(%2d) %d\n",a,b,ifo_add(a,b));
    a=         -1;b=-2;printf("%11d+(%2d) %d\n",a,b,ifo_add(a,b));
    a= 2147483647;b= 1;printf("%11d+(%2d) %d\n",a,b,ifo_add(a,b));
    a=-2147483647;b=-1;printf("%11d+(%2d) %d\n",a,b,ifo_add(a,b));
    a=-2147483647;b=-2;printf("%11d+(%2d) %d\n",a,b,ifo_add(a,b));
}
//          1+( 2) 0
//         -1+(-2) 0
// 2147483647+( 1) 1
//-2147483647+(-1) 0
//-2147483647+(-2) 1
707wk 2014-09-11
  • 打赏
  • 举报
回复
比如你平时吃一碗饭就吃饱了,但再让你吃一碗就吃不完,那剩下的饭就是溢出的数据
碼上道 2014-09-11
  • 打赏
  • 举报
回复
就是用1L的杯子装大于1L的水,就会溢出
ryfdizuo 2014-09-11
  • 打赏
  • 举报
回复
unsigned short usv = 9000000;
cao_julians 2014-09-11
  • 打赏
  • 举报
回复 1
是数值溢出还是数据(区)溢出? 数值溢出是指计算机中表示数据的格式限制了数值的表示范围,如十六位无符号整型数据的表示范围是从0到2的16次方减1,如果用这种数据格式表示2的16次方,结果就要溢出,它比能所表示的最大数值还大。 数据区溢出是指把比存储区域尺寸更长的数据存入数据区,如存储字符串的区域为10个字节,操作时将10个以上的字符存入这个区域。

69,371

社区成员

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

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