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

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输出结果为普通玩家?

正在回答

4 回答

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

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

Drawlight 提问者

非常感谢!
2015-10-22 回复 有任何疑惑可以回复我~

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

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

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

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

Drawlight 提问者

你可以试一试
2015-10-08 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消

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

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