C =(赋值)为右关联的示例
C =(赋值)为右关联的示例,c,parsing,variable-assignment,C,Parsing,Variable Assignment,=赋值运算符的关联性在表达式中会产生什么影响?我认为关联性与共享一个运算符的操作数有关,但是在赋值的情况下,它是如何工作的呢?以下是一些(可能)相关的例子: x = 1 x + 2 = y + 3 = z + 5 这是否意味着,在上述作业中,我们将: y + 3 = z + 5 以前做过,例如: x + 2 = y + 3 或者还有什么其他情况下赋值关联性“很重要”?您的示例没有说明任何内容,因为关联性只有在几个具有相同优先级(或相同运算符)的运算符相邻时才会起作用 考虑x=y=42,它将
=
赋值运算符的关联性在表达式中会产生什么影响?我认为关联性与共享一个运算符的操作数有关,但是在赋值的情况下,它是如何工作的呢?以下是一些(可能)相关的例子:
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++中,赋值返回LValk,它将像<代码> x= y一样工作;x=42代码>,这远远不是直观的
x+2=y+3
这不是有效的C,所以它不是一个好例子。在intx,y=0,z=1的情况下,关联性会产生差异;x=y=z一个更好的例子是A=b=c+1
。你不希望它是“代码> A= B < /CUD>后面跟着代码> B= C+1 。在你的例子中,你试过了他们是否编译?在C++ <代码>(x= y)=42;<代码>的工作方式类似于x=y,x=42代码>不是吗?