为了账号安全,请及时绑定邮箱和手机立即绑定

好奇怪,求大神解答

为什么当成绩是9000000000时是结果是普通玩家????int 有限制数字大小吗?

还有就是当输入99999999999.。。。。是偶数个9时就是钻石玩家,奇数个9时就是普通玩家

正在回答

2 回答

内存中存放的数都是补码。查查补码的定义吧。

这里拿32位来看

在32位的系统,int类型最大值正数为2147483647 换算为 补码就是 0111,1111,1111,1111

这时如果再加1  那二进制就是  1000,0000,0000,0000,第一位是符号位 1代表负数,也就是加1后溢出的结果 -2147483648。

如果不断的再加1 总会变成正数,然后就能满足那几个逻辑判断的任意一个条件了。你在最后面加9 实际上就是每次在前面增加了 9*10n2   9乘以10 的N次方,碰巧就符合你说的钻石、普通玩家了。


0 回复 有任何疑惑可以回复我~

C/C++在64位机中int的最大值就是2^63-1,最小值是-2^63

0 回复 有任何疑惑可以回复我~
#1

ainanshen 提问者

???是不是意思是大于这两个数就识别不了,然后就随意还是有其他规律认为是另一个数
2015-10-17 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消
C语言入门
  • 参与学习       926020    人
  • 解答问题       20793    个

C语言入门视频教程,带你进入编程世界的必修课-C语言

进入课程

好奇怪,求大神解答

我要回答 关注问题
意见反馈 帮助中心 APP下载
官方微信