问答详情
源自:4-3 分支结构之多重if-else语句

score的数值范围对结果有何影响?为什么?

#include <stdio.h>
int main()
{
    int score = 9;
    //完善一下代码
    if (score >= 10000)
    {
        printf("钻石玩家");
    }
    else if (score >= 5000 && score < 10000)
    {
        printf("白金玩家");    
    }
    else if (score >= 1000 && score < 5000)
    {
        printf("青铜玩家");     
    }
    else
    {
        printf("普通玩家");    
    }
    return 0;
}

int 的范围不是-2^13到2^13-1吗?

  1. 为什么当score取值90000000000(9*10^10)输出结果为普通玩家?

  2. 为什么当score取值99999999999输出结果却为白金玩家?

  3. 为什么当score取值999999999999999输出结果为普通玩家?

提问者:Drawlight 2015-10-07 21:55

个回答

  • PengCheng
    2015-10-19 14:37:21
    已采纳

    我看了一下,这台机器   int 取值范围是 : -2147483648~ 2147483647。当你给的值是  2147483648 时,会变成负数 -2147483648,再继续加1 又能逐渐变成整数,达到 2147483647时 又会变成 负数-2147483648。你拿你付的这几个值来算算看。

  • 伊兮尘昔
    2015-10-09 11:38:41

    这个是编译器自动改变了其值,你用GCC编译器试试看,在linux下面

  • 伊兮尘昔
    2015-10-08 11:08:12

    你代码里面没有取值啊?score就是9啊