=(赋值)是右结合的例子

Example of = (assignment) being right-associative

= 赋值运算符的结合性对表达式有何影响?我认为结合性与共享一个运算符的操作数有关,但在赋值的情况下,它如何工作?一些(可能)相关的例子是:

x = 1
x + 2 = y + 3 = z + 5

这是否意味着,在上面的作业中,我们会:

y + 3 = z + 5

之前做过,例如:

x + 2 = y + 3

或者赋值关联性还有哪些其他场景'matters'?

你的例子没有证明任何东西,因为只有当你有几个具有相同优先级(或相同运算符)的运算符彼此相邻时,关联性才会发挥作用。

考虑 x = y = 42,它将两个变量都设置为 42。

由于右结合性,它被解析为 x = (y = 42),其中 y = ... return 是 y 的新值,即 42。

这就是它起作用的原因。如果 = 是左结合的并且它被解析为 (x = y) = 42,那么:

  • 在 C 中它根本无法编译,因为 x = ... return 是右值而不是左值,并且不能将其分配给。
  • 在 C++ 中,赋值 return 左值,它的工作方式类似于 x = y; x = 42;,这远非直观。