Java 变量赋值:int x=x=1
这是Java编译器允许的,它在做什么Java 变量赋值:int x=x=1,java,Java,这是Java编译器允许的,它在做什么 int x = x = 1; 我知道x被分配给x,但是它怎么能有两个=s?x=1既将值1分配给x,又“返回”1,它允许这样的事情: while ((line = reader.readLine()) != null) int x将x放在堆栈上 右侧零件x=1将1分配给x。但这是一个值为1的表达式 最后,它被重新分配给x从右到左读取分配语句: 根据 有12名指派操作员;所有这些都是语法上的 右关联(它们从右向左分组)。因此,a=b=c意味着 a=(b=c)
int x = x = 1;
我知道x被分配给x,但是它怎么能有两个
=
s?x=1既将值1分配给x,又“返回”1,它允许这样的事情:
while ((line = reader.readLine()) != null)
int x
将x
放在堆栈上
右侧零件x=1
将1分配给x
。但这是一个值为1的表达式
最后,它被重新分配给
x
从右到左读取分配语句:
根据
有12名指派操作员;所有这些都是语法上的
右关联(它们从右向左分组)。因此,a=b=c意味着
a=(b=c),它将c的值赋给b,然后再赋给
从b到a
所以
与
x = (x = 1);
然后
你编译了吗?在没有询问usEclipse的情况下,您知道第一个问题的答案是x被设置为x.P.S。在java中,这种情况在大多数情况下都被认为是代码气味——有时唯一正常的情况(取决于您与谁交谈)类似于上面的示例
x = (x = 1);
x = 1; x = x;