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

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

int num = 999;

int count = 0;

do

{

   count++;

   num=num/10; 

}

while(num >0);


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


正在回答

3 回答

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

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

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

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

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

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

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

折_柳 提问者

谢谢亲的答复
2017-08-15 回复 有任何疑惑可以回复我~
#2

我也很绝望_但只能继续学啊 回复 折_柳 提问者

不用客气,麻烦采纳一下,O(∩_∩)O谢谢
2017-08-16 回复 有任何疑惑可以回复我~

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

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

应该是超出int型范围了

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

举报

0/150
提交
取消

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

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