Java三元运算符语法
发布时间:2020-12-15 04:25:04 所属栏目:Java 来源:网络整理
导读:参见英文答案 Ternary operator,syntax error when using assignment????????????????????????????????????4个 我有以下代码.这就是我理解它的方式. 在第一种情况下,三元运算符返回y的值,因为x = 4并且print语句按预期打印5. 在第二种情况下,三元运算符首先
参见英文答案 >
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); } } 解决方法
赋值的优先级低于三元表达式,因此这个表达式:
(x==4)?x=y:x = z; 可以被认为是: ((x==4)?x=y:x) = z; 显然无法编译,因为您无法为不是变量的内容赋值. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |