这是Java编译器允许的,它在做什么?
int x = x = 1;
我意识到x被分配给x,但它怎么能有两个=
s?
答案 0 :(得分:7)
x = 1都将值1分配给x并且'返回'1,它允许这样的事情:
definition = when is true ? this : else this;
答案 1 :(得分:3)
从右到左阅读赋值语句:
有12个赋值运算符;一切都是语法上的 右联想(他们从右到左分组)。因此,a = b = c表示 a =(b = c),它将c的值赋给b,然后赋值 b到a。
所以,
int x = x = 1;
与
相同x = (x = 1);
然后
x = 1; x = x;
答案 2 :(得分:1)
int x
将x
放入堆栈。
右手部分x = 1
将1分配给x
。但这是一个值为1的表达式。
最后重新分配给x
。