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

Java中同一变量使用一元自增运算符的表达式求值顺序疑问:为何int i=1; System.out.println(i++ + ++i);输出结果为4?

关于Java中i++ + ++i求值结果的疑惑解答

哈哈,这个问题我当初刚学Java的时候也纠结过好一阵!咱们来把这个逻辑掰扯清楚:

当你定义int i = 1;后执行System.out.println(i++ + ++i);,实际输出是4,而不是直觉里的3,问题出在你对后置自增运算符(i++)的执行逻辑理解不够透彻。

你之前的误区是:以为表达式只在顶层按从左到右求值,且只考虑优先级,但忽略了**i++的自增操作是在它自己的子表达式上下文里就完成的**——它不是只返回自增前的数值就结束,而是在返回1的同时,立刻把变量i的值改成了2。

咱们一步步拆解计算过程:

  • 第一步计算左边的i++:此时i初始值是1,i++会先把1返回给加法运算,同时立刻将i自增为2;
  • 第二步计算右边的++i:这时候i已经是2了,前置自增运算符会先把i自增为3,再把3返回给加法运算;
  • 最后执行加法:1 + 3 = 4,这就是最终输出的结果。

简单来说,核心就是:后置自增的自增动作是即时的,不是等整个表达式跑完才执行。之前你误以为i++的自增要等++i之后才生效,但实际上i++执行完,i已经变成2了,后面的++i自然是在2的基础上往上加,结果就变成4了。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.30 06:37:41