参见英文答案 >
Ternary operator, syntax error when using assignment 4个
我有以下代码.这就是我理解它的方式.
在第一种情况下,三元运算符返回y的值,因为x = 4并且print语句按预期打印5.
在第二种情况下,三元运算符首先将y的值赋给x,然后返回该值.再次,它按预期打印5.
在第三种情况下,三元运算符在左边的x = y:和x = z在右边:.我希望这与第二种情况非常相似.但是,这个语句甚至没有编译.
任何理解这一点的帮助将非常感激.
public class Test {
public static void main(String[] args) {
int x = 4;
int y = 5;
int z = -1;
x = (x == 4) ? y : z; // compiles and runs fine
System.out.println(x + " " + y + " " + z);
x = (x == 4) ? x = y : z; // compiles and runs fine
System.out.println(x + " " + y + " " + z);
x = (x == 4) ? x = y : x = z; // Does not compile
System.out.println(x + " " + y + " " + z);
}
}