好奇怪,求大神解答

来源:4-3 分支结构之多重if-else语句

ainanshen

2015-10-15 14:39

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

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

写回答 关注

2回答

  • PengCheng
    2015-10-19 14:09:38

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

    这里拿32位来看

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

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

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


  • PengCheng
    2015-10-15 16:11:40

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

    ainans...

    ???是不是意思是大于这两个数就识别不了,然后就随意还是有其他规律认为是另一个数

    2015-10-17 21:59:34

    共 1 条回复 >

C语言入门

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

926020 学习 · 20793 问题

查看课程

相似问题