Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/68.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C =(赋值)为右关联的示例_C_Parsing_Variable Assignment - Fatal编程技术网

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=zA=b=c+1
。你不希望它是“代码> A= B < /CUD>后面跟着代码> B= C+1 。在你的例子中,你试过了他们是否编译?在C++ <代码>(x= y)=42;<代码>的工作方式类似于
x=y,x=42不是吗?