这是做什么的?
int x = 1;
int y = 2;
int z = 3;
x = y = z;
我在一些开源项目中遇到过多种类型的东西,并且总是被它们弄糊涂了。通过它们我的意思是=运算符在三个整数上使用两次,即x = y = z;
。我需要了解这一点。谢谢!
答案 0 :(得分:11)
操作员=
评估右侧并将结果分配给左侧的变量。表达式返回此值。
为此,评估从右向左进行:
x = (y = z);
y
变为3,返回的值为3.因此,x
也被指定为3。
答案 1 :(得分:1)
=
正在评估从右到左的
x = y = z
会使x
和y
等于z
,即= 3
答案 2 :(得分:1)
在大多数语言中=
代表赋值运算符,规则是赋值运算符的左侧必须是变量/对象。 (您也可以这样做object1=object2
,但object2
的引用将是此处的值)
你不能2=3
或2=2
这里发生的事情是你首先要确定z to y
x=y=z
y=z
x=y
此处从右到左进行评估,因此y
的值为z
,而x
的值为y
可能这里要注意你不能直接x=4=5
。
It must be variable=variable=(value/variable)<------------------
z
必须已初始化 答案 3 :(得分:1)
=
运算符会将右侧表达式的值赋给左侧的变量
因此,在x=y=z
中,z
的第一个值将分配给y
,然后将其分配给x
。
STEP 1 : x=(y=z) /assign value of z to y.
STEP 2 : x=y /assign value of y to x.
因此x的值为3。
答案 4 :(得分:1)
赋值运算符始终评估右侧表达式,因此您的语句等同于
//this expression is equal to
x=y=z;
y=z;
x=y;
//so first y becomes 3 and the value assign to x
//means first assign the value of z to y than assign the value of y to x
答案 5 :(得分:1)
x = y = z
与x=(y=z)
因此,首先为y分配z,i,e 3的值,然后将结果分配给x。
最后,值为x = 3
,y = 3
和z = 3
答案 6 :(得分:1)
=
运算符从右到左进行评估。
所以,当你写x=y=z
时,它的工作形式是右手边的左手边
<强> 1。 y = z,即z赋值为y的值
<强> 2。然后x = y,即y的新值现在分配给x
例如,
如果x = 1,y = 2且z = 3则在x=y=z
值x = 3之后,y = 3且z = 3
值以这种方式分配
x=y=z <-------------
答案 7 :(得分:0)
请阅读一些规范:
There are 12 assignment operators; all are syntactically right-associative (they group right-to-left). Thus, a=b=c means a=(b=c), which assigns the value of c to b and then assigns the value of b to a.
另见: