java中的运算符:有人能给我解释一下以下java代码的输出吗
输出:java中的运算符:有人能给我解释一下以下java代码的输出吗,java,Java,输出: class { public static void main(String args[]) { boolean a=false,b=false,c=false,x=false; x=(a=true) || (b=true) && (c=true); System.out.println(a + "," + b + "," + c); } } 代码输出的秘密在于这一行: true,false,false 在避开第一
class {
public static void main(String args[]) {
boolean a=false,b=false,c=false,x=false;
x=(a=true) || (b=true) && (c=true);
System.out.println(a + "," + b + "," + c);
}
}
代码输出的秘密在于这一行:
true,false,false
在避开第一个陷阱(将赋值(=
)误读为比较(=
)之后,人们可能会认为每个变量都将被赋值为布尔值true
)
但事实是,由于OR(|
)的第一部分-true
赋值给a
((a=true)
)-导致true
,逻辑表达式(OR)的执行被停止,它无论如何都会导致true
。
因此第二部分(
(b=true)和&(c=true)
)没有被执行,因此b
和c
仍然false
我认为当你用上述表达式将x
赋值给true
或false
时,a
被分配给true
,因此OR的右侧被忽略,因为无论RHS是什么,x
已经是true
。因此,b
和c
保持不变。它在Java文档的某个地方(关于逻辑表达式的RHS被忽略),这同样适用于x=false&&which
你能格式化你的代码吗?您可以通过选择问题并按CTRL+K.No来完成此操作。没有人可以…当您执行a=true
时,您将值true
分配给a
。你的怀疑是什么?寓意是:如果(a=true)永远不要键入,那么你就不会意外地键入如果(a=true)
。在这种情况下,我不确定这是否是一个意外。这可能是一个测试。哦,对不起。我打字花了很长时间(我用的是手机,所以速度更慢),为重复道歉。
x = (a=true) || (b=true) && (c=true);