有符号型和无符号型各种数据类型的溢出问题

我们知道无符号类型,例如“unsigned short”或“unsignedint”型数据在相加达到最大值后,会发生从0开始重新计数的情况,以下就是对一个“unsignedshort”类型进行“++”操作的结果:
liCount = 65533
liCount = 65534
liCount = 65535
liCount = 0
liCount = 1
liCount = 2
可是对于有符合类型,如“short”、“int”、“long”、或“longlong”型数据在相加后达到最大值后,会发生什么情况呢,于是对一个“int”型数据进行了“++”操作的测试,结果如下:
iCount = 2147483645
liCount = 2147483646
liCount = 2147483647
liCount = -2147483648
liCount = -2147483647
liCount = -2147483646
可见其数据的达到最大后,变成了最大绝对值的负数;通过上述测试判断,如果只想使用其大于0的有符合类型数据,需要自己加以保护了。

最后,我还测试了一下Linux平台的情况,数据溢出后的情况是完全一致的;另外这种情况叫什么呢,我没有查到,只能暂时称为“回环”,希望得到大家的批评指正。

注意:Int类型溢出太大会从负数变成正数


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值