C 检查我是否正确理解这个概念(关联性)

C 检查我是否正确理解这个概念(关联性),c,associativity,C,Associativity,有人问我是否可以预测z的值 int x,y,z; z= (x=2) + (y=x) 我知道()操作符已经离开了关联性。这是否意味着左括号的求值将先于右括号的求值 我想知道我是否正确理解这个概念 提前感谢否。关联性表示x+(y+z)==(x+y)+z==x+y+z;当链接2个或多个相同运算符时,括号并不重要 在代码中,编译器可以按任意顺序计算+的操作数。你不知道结果会不会是这样 x=2; y=x; z = x + y; 或 不是专家,但表达式似乎缺少一个序列点。我不确定括号首先是否具有关联性。

有人问我是否可以预测z的值

int x,y,z;
z= (x=2) + (y=x)
我知道()操作符已经离开了关联性。这是否意味着左括号的求值将先于右括号的求值

我想知道我是否正确理解这个概念


提前感谢

否。关联性表示
x+(y+z)==(x+y)+z==x+y+z
;当链接2个或多个相同运算符时,括号并不重要

在代码中,编译器可以按任意顺序计算
+
的操作数。你不知道结果会不会是这样

x=2; y=x; z = x + y;


不是专家,但表达式似乎缺少一个序列点。我不确定括号首先是否具有关联性。有一个关联性/优先表。括号具有最高的优先级和从左到右的关联性。你为什么要费心去弄清楚这样一个可怕代码的输出是什么?枪毙编写它的人,然后正确地重写它。因为ot是一个理解编译器如何工作的练习,但这是加法的关联性,不是括号,不是吗?不,括号不是运算符。它们将表达式分组以修改优先级,因为
z=x=2+y=x
否则将被解析为。。。我甚至都不太清楚。也许
z=(x=(2+(y=x))
y=x; x = 2; z + x + y;