ainanshen
2015-10-15 14:39
为什么当成绩是9000000000时是结果是普通玩家????int 有限制数字大小吗?
还有就是当输入99999999999.。。。。是偶数个9时就是钻石玩家,奇数个9时就是普通玩家
内存中存放的数都是补码。查查补码的定义吧。
这里拿32位来看
在32位的系统,int类型最大值正数为2147483647 换算为 补码就是 0111,1111,1111,1111
这时如果再加1 那二进制就是 1000,0000,0000,0000,第一位是符号位 1代表负数,也就是加1后溢出的结果 -2147483648。
如果不断的再加1 总会变成正数,然后就能满足那几个逻辑判断的任意一个条件了。你在最后面加9 实际上就是每次在前面增加了 9*10n2 9乘以10 的N次方,碰巧就符合你说的钻石、普通玩家了。
C/C++在64位机中int的最大值就是2^63-1,最小值是-2^63
C语言入门
926020 学习 · 20793 问题
相似问题