glshchno1 发表于 2024-3-19 22:36:47

原理表达式中除了预算法本身的优先级外,还有一个结合性问题。在(++j)+(++j)+(++j);中,因为存在两个同级的+运算,根据+运算符的“左结合性,在编译时,其实是先处理前面的((++j) + (++j))这部分,然后再将此结果再和++j相加。”这句话不明白————,不是有括号先算括号吗?为什么第三个括号不先算?

ACM小队RPY小队 发表于 2024-11-28 10:20:26

shadowkill 发表于 2012-4-4 19:21
但是我还是没明白(++j)+(++j)=不是应该是 5+6吗?怎么是6+6呢

我理解的意思是,在只有一个+或者-号时,先将两边的自增运算都算完得出j的最终结果后(相当于右边的j指覆盖了前面的,因为至始至终这里只有一个变量),再进行+/-的运算;之后的更多的+/-后才是你理解的意思(因为左侧的是运算结果,相对于右侧自增运算符的j的覆盖后的值来说,里面的j值滞后一个操作,产生的差异),而前面的是同一操作阶段的,所以保持j的一致了
页: 1 2 3 4 [5]
查看完整版本: C语言自增自减学习资料