这是一段 Java 代码:
static boolean a; // gets false
static boolean b;
static boolean c;
public void printA(){
boolean bool = (a = true) || (b = true) && (c = true);
System.out.print(a + ", " + b + ", " + c);
}
无法编译,请问是什么问题?错误:该行有多个标记; “bool”变量行上的语法错误。
我希望它能打印出来true, false, true
。
虽然根据我的教程书它打印true, false, false
.
我知道它会执行短路,但在 && 的情况下,双方都需要进行评估。那不是作业,我正在学习Java。
干杯
(a = true) || (b = true) && (c = true);
相当于:-
(a = true) || ((b = true) && (c = true));
Since (a = true)
被评估为true
,因此不会评估第二个表达式,因为您正在使用短路运算符 (||) there.
因此最后两个分配不会发生。和价值观b
and c
remain false
.
Note: -短路运算符 -&&
and ||
,如果之前的评估能够得到某个结果,则不再进一步评估。
So: -
a && b
不会评价b, if a是假的。
a || b
不会评价b, if a是真的。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)