关于这段C#代码中后置自增运算符执行逻辑的疑问
C#代码执行顺序解析
先看你给出的代码:
int value = 10; value = value++ + --value; Console.WriteLine(value);
你的两种理解里,第二种更接近正确逻辑,但核心要明确:C#中二元运算符的操作数是严格从左到右求值的,和运算符优先级无关。具体执行步骤如下:
- 第一步计算左操作数
value++:后置自增运算符会先返回当前的value值10,随后将value自增为11。 - 第二步计算右操作数
--value:前置自减运算符会先将当前的value(此时是11)减1变为10,然后返回这个新值10。 - 最后执行加法运算:10 + 10 = 20,将结果赋值给value,所以最终输出是20。
你之前的误解在于混淆了运算符优先级和操作数求值顺序:优先级决定的是运算符的结合方式(比如先算乘除还是加减),但不管优先级如何,二元运算符的左右操作数一定是先算左边,再算右边。所以不存在“先处理优先级更高的--value”这种情况,必须先完成左边value++的求值,再处理右边的--value。
内容的提问来源于stack exchange,提问作者DenysB12
相关产品推荐
相关产品推荐

