提问人:DenysB12 提问时间:10/22/2023 最后编辑:DenysB12 更新时间:10/22/2023 访问量:57
在这种情况下,后增量如何工作?[复制]
How does post-increment work in this case? [duplicate]
问:
int value = 10;
value = value++ + --value;
Console.WriteLine(value);
我已经知道结果了,但我想问一下我对动作顺序的理解有多正确。 最初,value++ 返回当前值,即 10。在下一步中,它将递增。之后,优先级是 --value,这里我们减去 1,它将是 9,我们从前一个值写出 +1,也就是说,它将是 10,从左到右的最后一个动作是 10 + 10,对吧?或者 --value,立即存储 11 并从中减去 1?哪个选项是正确的?我是不是误会了什么?
答:
-1赞
brett_0267
10/22/2023
#1
我想我明白了混乱是什么。这个例子可以澄清它:
int value = 10;
value = value++;
Console.WriteLine(value);
// Output: 10
value = 10;
value = ++value;
Console.WriteLine(value);
// Output: 11
在第一个块中,该值是后递增的。它不会更新,因为我们将该值赋值为其当前值 10,然后递增它(这不会设置它或更新变量)。 在第二个块中,该值是预先递增的。所以我们先递增值,再赋值后赋值,使赋值为11。
当我们在上面的行 (value++) 中发布增量值时,我们说我们不会更新它的值,直到此操作之后。但是该赋值被我们在这一行中所做的赋值所覆盖。现在让我们看另一个例子来说明:
int value = 10;
value = value++;
Console.WriteLine(value);
// Output: 10
value++;
Console.WriteLine(value);
// Output: 11
当我们执行 value = value++ 时,我们正在覆盖运算符中将发生的赋值,因此它对值没有影响。
评论
0赞
Ry-
10/22/2023
是 ,不是.操作数是从左到右计算的,因此在执行时已经是 11 个。10 + 10
10 + 9
value
--value
0赞
DenysB12
10/22/2023
好的,太好了,谢谢。
0赞
brett_0267
10/22/2023
好渔获,错过了。更新以防万一有人偶然发现我的第一个回复。
评论