繁体   English   中英

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

[英]Example of = (assignment) being right-associative

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

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

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

y + 3 = z + 5

以前做过,例如:

x + 2 = y + 3

或者还有哪些其他场景可以让分配关联性“很重要”?

您的示例没有演示任何内容,因为只有当您有多个具有相同优先级(或相同的运算符)的运算符彼此相邻时,关联性才会发挥作用。

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

由于右关联性,它被解析为x = (y = 42) ,其中y =...返回y的新值,即 42。

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

  • 在 C 中它根本不会编译,因为x =...返回一个右值而不是左值,并且不能分配给那些。
  • 在 C++ 中,赋值返回左值,它会像x = y; x = 42; x = y; x = 42; ,这远非直观。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM