为什么这是下面循环的输出
本文关键字:循环 输出 为什么 | 更新日期: 2023-09-27 18:28:39
为什么我得到以下输出:4 8 12 16 20
int i, j = 1, k;
for (i = 0; i < 5; i++)
{
k = j++ + ++j;
Console.Write(k + " ");
}
我认为这里的其他答案不正确。
根据数学排序操作按顺序评估变量。在这种情况下,我们只是添加,所以从左到右对它们进行评估。j++
然后++j
j++ + ++j
j
nbsp nbsp;让我们在循环开始时调用j
的值p
j++
;j
评估为递增前值(p
),然后j
递增(p+1
)++j
;j
被递增(p+2
)并且被评估为递增后的值(p+2
)
因此,两个被评估的数字是p
+p+2
:
i initial j j++ + ++j k j
================================
0 1 1 + 3 4 3
1 3 3 + 5 8 5
2 5 5 + 7 12 7
3 7 7 + 9 16 9
4 9 9 + 11 20 11
井k=j++(+)++j
j++将增加j的值,但返回预先增加的值
++j将递增j的值,然后返回递增的值。
j++ = 2 but really returns (1)
不过,一旦你点击++j,你就会增加j的实际值,目前是2。
++j = 3
1 + 3 = 4
++i和i++之间有什么区别?
在C#中,+运算符只是一个函数,在您的例子中,j++
和++j
是函数的参数。函数参数的计算从左到右进行,因此我们对循环的每次迭代都会得到以下结果:
j++
递增j
的值,但返回原始值++j
再次递增j
的值并返回新值- 使用(1)和(2)的结果调用
+
运算符
例如,当i==0
时,j
最初是1
。然后j++
执行,将j
设置为2
,并返回1
。然后++j
将j
递增到3
,并返回3
。所以加法变成1 + 3
,得到k = 4
。
j++
递增j的值,但返回预先递增的值++j
递增j的值,但返回递增的值