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

为什么结果为负的无穷大?

为什么结果为负的无穷大?

老子打死抢我昵称的人 2017-07-05 20:15:32
int x = 80000000;while(x > 0)x++;System.out.println("x is :"+x);
查看完整描述

5 回答

已采纳
?
达拉崩吧斑得贝迪卜多比鲁翁

TA贡献41条经验 获得超38个赞

这个地方是需要考虑的是int类型数据范围值

int   -2147483648~2147483647

这是个很玄妙的东西,数据溢出之后数据会再次跑一圈。

具体的内容你需要查阅 反码 补码 位运算 相信你看为这个内容就会明白了。

查看完整回答
3 反对 回复 2017-07-06
?
书旅

TA贡献238条经验 获得超101个赞

int类型数据时有范围的,这部分你可以查一下,很神奇的,不好描述,其实数一直在一个圈中循环

查看完整回答
2 反对 回复 2017-07-06
?
程Glory

TA贡献19条经验 获得超6个赞

超出了int型数值所能存放的最大数值。

查看完整回答
1 反对 回复 2017-07-06
?
緋翼

TA贡献9条经验 获得超6个赞

建议您看下数据类型转换!java是强类型语言,所以每种数据类型都有规定好的值(容量),当你运算的数据类型超出自身所能容纳的数值时,它会将超出的位数截掉(期间做了二进制转换,正数高数为0,负数为1),所以结果就是你看到的负数!(解释或许不清楚,建议你查下资料)

查看完整回答
1 反对 回复 2017-07-06
?
风与叶子

TA贡献1条经验 获得超0个赞

int x = 80000000;
while(x > 0) {
    x++;
}            //跳不出循环。
System.out.println("x is :"+x);


查看完整回答
反对 回复 2017-07-06
?
MR帽子先生

TA贡献245条经验 获得超106个赞

你的代码有问题,while x>0 恒成立,所以你的代码会直接死循环,所以结果为无穷大。

希望对你有帮助,祝你学习愉快。

查看完整回答
反对 回复 2017-07-05
  • 老子打死抢我昵称的人
    老子打死抢我昵称的人
    您好!谢谢你的回答,但是我想问的问题是为什么是负的无穷大,因为我也知道它是无穷循环的。 这是eclipse运行的结果: x is :-2147483648
  • MR帽子先生
    MR帽子先生
    因为出错了,超出最大字符就会显示-的
  • 緋翼
    緋翼
    并不是出错,而是超出了int规定的最大值,得到了负数,然后结果成立,所以并不是死循环
  • 5 回答
  • 0 关注
  • 2535 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信