课程
/后端开发
/C
/C语言入门
为什么当成绩是9000000000时是结果是普通玩家????int 有限制数字大小吗?
还有就是当输入99999999999.。。。。是偶数个9时就是钻石玩家,奇数个9时就是普通玩家
2015-10-15
源自:C语言入门 4-3
正在回答
内存中存放的数都是补码。查查补码的定义吧。
这里拿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
ainanshen 提问者
举报
C语言入门视频教程,带你进入编程世界的必修课-C语言
2 回答求大神解答
3 回答求大神解答!
1 回答求大神解答