【问题标题】:operators in java: Can anyone explain to me output of the following java code [closed]java中的运算符:谁能向我解释以下java代码的输出[关闭]
【发布时间】:2017-02-26 07:59:04
【问题描述】:
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);
    }   
}

【问题讨论】:

  • 你能格式化你的代码吗?您可以通过选择您的问题并按 CTRL + K 来完成。
  • 没有。没有人可以...
  • 当您执行a=true 时,您将值true 分配给a。你有什么疑问?

标签: java


【解决方案1】:

我认为发生的情况是,当您使用上述表达式将x 分配给true 或false 时,a 被分配给true,因此 OR 的右侧被忽略,因为无论 RHS 是什么,x 已经是 true。因此b 和c 保持不变。它在 Java 文档的某处(关于逻辑表达式的 RHS 被忽略)同样适用于x = false && whatever

【讨论】:

  • 糟糕,抱歉。我需要很长时间才能打字(我正在使用手机,所以速度更慢)抱歉重复。
【解决方案2】:

输出:

true,false,false

你的代码输出的秘密在于这一行:

x = (a=true) || (b=true) && (c=true);

在避开第一个陷阱后 - 将赋值 (=) 误读为比较 (==) - 人们可能会认为每个变量都将被赋予布尔值 true。

但事实是,由于 OR (||) 的第一部分 - 将 true 分配给 a ((a=true)) - 结果是 true,逻辑表达式 (OR) 的执行已停止,无论如何都会导致 true。 所以第二部分((b=true) && (c=true))没有被执行,因此b和c仍然是false。

【讨论】:

  • 道德是:永远输入if (a == true),然后你就不会意外输入if (a = true)。
  • 在这种情况下,我不确定是否是意外。这可能是一个测试。
猜你喜欢
  • 1970-01-01
  • 2020-11-18
  • 2022-01-03
  • 1970-01-01
  • 2022-06-11
  • 2018-11-30
  • 1970-01-01
  • 2021-04-24
  • 2021-02-27
相关资源
最近更新 更多