谁能跟我说一下C++ 中数据溢出是怎么一回事吗
答案:4 悬赏:70 手机版
解决时间 2021-02-04 04:40
- 提问者网友:贪了杯
- 2021-02-03 20:13
谁能跟我说一下C++ 中数据溢出是怎么一回事吗还有为什么int 的范围是 -32768 --32767 ,这是人为规定的吗?
最佳答案
- 五星知识达人网友:平生事
- 2021-02-03 21:24
"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,商为无穷大 -- 大家习惯说 溢出了。
老的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,商为无穷大 -- 大家习惯说 溢出了。
全部回答
- 1楼网友:撞了怀
- 2021-02-03 22:41
例如int它的范围就是 -2^3+1~ 2^3-1 这是指的32为的int 他实质是这样的:
0000 0000 0000 0000 0000 0000 0000 0000 32bit位来表示一个int数字,若你给他赋一个超出范围的值,那个大数的bit位将大于32位 则变成了低32位的内容对应的int数字了。
- 2楼网友:野慌
- 2021-02-03 22:16
数据溢出的意思就是说超出了 数据类型本身的范围。
比如说你下边说的int 的范围是 -32768 --32767
多出或者少于这个范围,都会导致数据溢出
但为什么int 的范围是 -32768 --32767 ,他是人为规定的,在当时设置int这个类型的时候,就固定了他的范围,这个 数值范围-32768 --32767,其实就是这个数据类型被分配的内存空间。
- 3楼网友:痴妹与他
- 2021-02-03 21:33
数据溢出的意思就是说超出了 数据类型本身的范围。
比如说你下边说的int 的范围是 -32768 --32767
多出或者少于这个范围,都会导致数据溢出
但为什么int 的范围是 -32768 --32767 ,他是人为规定的,在当时设置int这个类型的时候,就固定了他的范围,这个 数值范围-32768 --32767,其实就是这个数据类型被分配的内存空间。
再看看别人怎么说的。
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯