问答详情
源自:4-15 编程练习

这个循环为什么只能测试10位数之间的,而11位数却不能测试出来

int num = 999;

int count = 0;

do

{

   count++;

   num=num/10; 

}

while(num >0);


System.out.println("它是个" + count + "位的数!");


提问者:折_柳 2017-08-11 09:55

个回答

  • 我也很绝望_但只能继续学啊
    2017-08-11 11:05:57

    首先jdk中定义int占4个字节,也就是32位,

    32位可以理解为jvm只给分配32个格子的空间,用以存放数据。

    但是Java中int有正负之分。所以32个格子中占用一个格子标识正负。

    所以只能用31个格子来标识数值。

    所以int能标识的最大/最小数字是:2的31次方:+/- 2147483648(刚好十位数),

    如果要测试到11位,建议把   int类型改成long int 就行了

  • 张冠森
    2017-08-11 10:27:54

    Java代码中直接书写的数字是int类型的,就是说数字的范围在 -2^31 到 2^31 - 1 这个范围之中.

  • LChloe
    2017-08-11 10:01:19

    应该是超出int型范围了