首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C语言 >

C语言数据溢出有关问题

2013-01-19 
C语言数据溢出问题图二数据类型数据溢出c语言[解决办法]楼主你代码是不是写错了。。。你代码里的a,b值是一样

C语言数据溢出问题



图二
C语言数据溢出有关问题 数据类型 数据溢出 c语言
[解决办法]
楼主你代码是不是写错了。。。你代码里的a,b值是一样的,你后面贴出来的调试结果a,b是不一样的
[解决办法]
你这里能算出"正确"结果是 回绕了 
SHRT_MAX+1 == SHRT_MIN
SHRT_MIN-1 == SHRT_MAX
算出的结果自然符合"预期"

要避免有符号数溢出这个未定义行为 是因为不能确保 他可能回绕 也有可能是其他行为 

[解决办法]
就像2楼说的,回绕了。也就是又溢出了一次。
最大正数就是你计算的32767,那么最小负数是多少?就是-32678。可以看到当时a的值是-2,-2减去32767是-32769,同样溢出了,所以就产生了回绕现象。
从内存的角度来看(以16进制表示)
a=0x7fff
b=0x7fff
a+b得0xfffe,也就是-2
b=a-b得0x7fff,也就是32767
a=a-b得0x7fff,也就是32767
[解决办法]
对学习编程者的忠告:
眼过千遍不如手过一遍!
书看千行不如手敲一行!
手敲千行不如单步一行!
单步源代码千行不如单步对应汇编一行!

热点排行
Bad Request.