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

为何JShell执行i=i++ + i++得到结果41而非42?

为什么i=i++ + i++的结果是41而不是42?

要搞清楚这个问题,得先明确Java里后缀自增运算符++的核心规则:后缀++会先返回变量的当前值,再将变量自身加1。结合表达式从左到右的求值顺序,我们一步步拆解执行过程(初始i=20):

  1. 处理第一个i++:返回当前值20,随后i自增为21。
  2. 处理第二个i++:此时i已经是21,返回21,随后i自增为22。
  3. 计算加法:将两个返回值相加,20 + 21 = 41。
  4. 执行赋值操作:把计算结果41赋值给i,覆盖了之前自增到22的数值,最终i的值为41。

你之前的误解在于认为两个i++都会使用初始值20,但实际上第一个i++执行后i已经被更新,第二个i++会基于更新后的i值返回结果,所以最终结果不是42而是41。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.18 15:45:31