You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Java中预期无限运行的for循环异常输出负数,是什么原因导致的?

原因分析

该现象是Java int类型的有符号整数溢出导致的,具体逻辑如下:

  • Java中int是32位有符号整数,取值范围固定为 -2147483648 到 2147483647,底层采用补码规则存储。
  • 循环变量x从10开始持续自增,当x达到最大值2147483647后,再执行x++会触发上溢,数值会绕回至int的最小值-2147483648。
  • 此时x > 0的循环判断条件不再成立,循环直接终止,并不会无限运行。
  • 累加变量sum在循环过程中也会多次超过int的最大值触发溢出,最终按补码规则计算得到负数结果-1073741869,属于溢出后的正常输出。

补充说明

如果需要实现无限制的累加逻辑,可以将变量类型替换为BigInteger避免溢出;如果只是要实现无限循环,直接使用for(;;)或者while(true)即可。

内容的提问来源于stack exchange,提问作者CopperCleric

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.25 04:06:03