为什么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 = 2
和 j = 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)
我使用的代码是
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 = 2
和 j = 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)