数据溢出的意思就是说超出了 数据类型本身的范围。
比如说你下边说的int 的范围是 -32768 --32767
多出或者少于这个范围,都会导致数据溢出
但为什么int 的范围是 -32768 --32767 ,他是人为规定的,在当时设置int这个类型的时候,就固定了他的范围,这个 数值范围-32768 --32767,其实就是这个数据类型被分配的内存空间。
例如int它的范围就是 -2^3+1~ 2^3-1 这是指的32为的int 他实质是这样的:
0000 0000 0000 0000 0000 0000 0000 0000 32bit位来表示一个int数字,若你给他赋一个超出范围的值,那个大数的bit位将大于32位 则变成了低32位的内容对应的int数字了。
"int 的范围是 -32768 --32767" 这是老的16位编译器的定义。
老的16位编译器 用 2个字节存放1个整型数。最高1位是符号位。符号位等于1为负数,符号位等于0为正数。最大正数等于 0111 1111 1111 1111。 (16进制 0x7fff), 化成10进制 等于 32767。 负数用补码存放,绝对值最大的负整数是: 1000 0000 0000 0000,化成10进制 等于 -32768。 超出此范围 就 搁不下了,就叫 溢出。
现在 计算机语言规定 int 是 long int, 是 32 位, 它的范围大概是 -2147483648 2147483647,你要查一下。
通常谈溢出,常指 做除法时,分母为 0,商为无穷大 -- 大家习惯说 溢出了。