You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

为何C#中++/--运算符优先级规则看似不生效?

为什么a++赋值给变量时结果不是递增后的值?

你混淆了运算符优先级和后缀自增运算符的语义规则,这是两个完全不同的概念:

  1. 后缀a++的核心逻辑是:先返回变量当前的原始值,再对变量执行递增操作。这个规则是运算符本身的定义,和优先级无关。
  2. 回到你的代码:
    int a = 2;
    int b = a++;
    
    具体执行步骤是:
    • 后缀++运算符作用于a,但它先把a的当前值(2)作为整个a++表达式的结果输出。
    • 完成取值后,再将a的值加1,此时a变成3。
    • 最后赋值运算符把a++表达式的结果(2)赋值给b,所以b的值是2而非3。

如果想要b得到递增后的值,应该使用前缀自增运算符++a,它的语义是先对变量递增,再返回新值:

int a = 2;
int b = ++a; // 此时b的值是3,a的值也是3

运算符优先级只是决定了a++会先于赋值运算执行,但执行a++本身的逻辑是“先取值后递增”,这才是导致结果不符合你预期的根本原因。

内容的提问来源于stack exchange,提问作者runisten

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.18 11:55:54