【问题标题】:Why values of i and j are 2 after the execution of statement " j= i++ + ++i"? [duplicate]为什么执行语句“j= i++ + ++i”后 i 和 j 的值为 2? [复制]
【发布时间】:2021-02-28 17:36:53
【问题描述】:

我使用的代码是

int i=0, j=0; j=i++ + ++i;

而我得到的输出是 i=2 and j=2

谁能解释这是怎么发生的!

【问题讨论】:

  • 因为i++在评估后增加,++i在评估前增加
  • 如果其中一个解决了您的问题,您能accept an answer(或副本)吗?

标签: java post-increment pre-increment associativity


【解决方案1】:

表达式的计算步骤如下:

第一步: j = i++ + ++i; => j = 0 + ++i; step result i = 1 and j = 0(后增量会更新值但返回旧值)

第二步: j = 0 + ++i; => j = 0 + 2; 步长结果 i = 2 and j = 0(预增量会更新值并返回更新后的值)

第三步: j = 0 + 2; => j = 2; 步骤结果 i = 2 and j = 2(直接加并赋值给j)

【讨论】:

    【解决方案2】:

    i++ 增加 i 的值并返回它保存的先前值, ++i 增加值并返回新值。所以在你的等式中,i++ 将 i 增加 1 并返回前一个值 0。由于 i 已经增加了 1,所以现在 i 的值是 1。然后这个 i 将在 ++i 中增加,返回值将是新的值 2。所以 0+2 是方程中 j 的值。

    【讨论】:

      【解决方案3】:

      i++ 将“检索” 0,然后将 1 添加到 i++i 将在i 上加 1,然后检索其值。因此,这相当于j = 0 + 2。它还将 1 添加到 i 两次。因此,i = 2j = 2

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2021-09-20
        • 2019-08-05
        • 1970-01-01
        • 1970-01-01
        • 2020-03-28
        • 2014-02-15
        • 2013-04-22
        相关资源
        最近更新 更多