这种情况下后增量如何工作?

问题描述 投票:0回答:1
            int value = 10;
            value = value++ + --value;
            Console.WriteLine(value);

我已经知道结果,但我想问一下我对动作顺序的理解是否正确。 最初,value++ 返回当前值,即 10。在下一步中,它将递增。之后,优先级是--value,这里我们减1,就是9,我们在之前的值上写+1,就是10,从左到右最后一个动作是10 + 10,右?或者--value,11立即存储并减去1?哪个选项是正确的?我是不是误会了什么?

c# console-application increment decrement
1个回答
0
投票

我想我明白了困惑是什么。这个例子可能会澄清它:

int value = 10;
value = value++;
Console.WriteLine(value);
// Output: 10

value = 10;
value = ++value;
Console.WriteLine(value);
// Output: 11

在第一个块中,该值是post递增的。它不会更新,因为我们将该值分配给当前值 10,然后递增它(这不会设置它或更新变量)。 在第二个块中,该值是 pre 递增的。所以我们先递增值,递增后再赋值,使得赋值为11。

所以在行中:

value = value++ + --value;

我们对此的评估为:

value = 10 + 9;

当我们在上面的行(value++)中后递增值时,我们是说在此操作之后我们才会更新其值。但是该作业被我们在这一行中所做的作业覆盖。现在让我们看另一个例子来说明:

int value = 10;
value = value++;
Console.WriteLine(value);
// Output: 10
value++;
Console.WriteLine(value);
// Output: 11

当我们执行 value = value++ 时,我们会覆盖运算符中发生的赋值,因此它对值没有影响。

© www.soinside.com 2019 - 2024. All rights reserved.