C语言中的结合性是怎么回事?

Python041

C语言中的结合性是怎么回事?,第1张

简单说就是,从表达式右边开始执行;

只有同优先级运算符才具有结合性“自左至右”或者“自右自左”一说。

exp(不同优先级运算符,依据优先级高低进行运算):

int a = 1, b =10, c = 30

int a = a * b + c

因为 * 比 + 的运算符优先级高,所以

先计算a * b (先计算左边,未考虑结合性),在计算 10 + c

结果是 a = 300

exp(同优先级运算符依据结合性进行运算):

int a, b = 1, c = 8

a = b = c

赋值运算符其结合性即为自右向左,即 a = ( b = c), 其结果是 b = 8, a = 8

(错误答案:自左向右进行结合的话a = 1)

例如用 O 表示需要两个操作数的双目运算符,那么对于表达式 a O b O C ,左结合运算符将表达式解释为:

右结合运算符将表达式解释为:

也就是说, 遇到优先级相同的运算符时,结合性指明了表达式应从左向右运算还是从右向左运算

例如,执行减法计算的双目运算符 - 是左结合性的,所以:

执行赋值操作的简单赋值运算符 = 是右结合性: