为什么j=i+++++i语句执行后i和j的值为2?

Why values of i and j are 2 after the execution of statement " j= i++ + ++i"?

我使用的代码是

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

我得到的输出是 i=2 和 j=2

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

i++ 将“检索”0,然后将 1 添加到 i++i 会将 i 加 1,然后取回它的值。因此,这相当于 j = 0 + 2。它还将 1 加到 i 两次。因此,i = 2j = 2.

i++ 递增 i 的值,returns 是它保存的先前值,++i 递增该值,returns 是新值。因此,在您的等式中,i++ 将 i 递增 1,returns 先前的值 0。由于 i 已经递增 1,因此现在 i 的值为 1。然后我将递增 ++i 和 return value 将是新值 2。因此 0+2 是等式中 j 的值。

表达式的计算步骤如下:

第一步:j = i++ + ++i; => j = 0 + ++i; 步骤结果 i = 1 和 j = 0(post 增量将更新值,但 returns 旧值)

第 2 步:j = 0 + ++i; => j = 0 + 2; step result i = 2 and j = 0 (pre increment will update the value and returns the updated value)

第 3 步:j = 0 + 2; => j = 2; step result i = 2 and j = 2 (直接相加赋值给j)