gpt4 book ai didi

使用 AND 和 OR 的 Java 表达式评估顺序

转载 作者:行者123 更新时间:2023-11-29 09:48:20 25 4
gpt4 key购买 nike

    boolean a = false;
boolean b = false;
boolean c = false;
boolean bool = (a = true) || (b = true) && (c = true);
System.out.println("" + a + b + c);

前面的代码打印truefalsefalse。但是,&& 运算符的优先级高于 || 运算符,应该先求值,那么为什么它不打印 truetruetrue

最佳答案

相信您问题的症结在于这部分:

But, the && operator has higher precedence than the || operator and should be evaluated first

没有。优先级不影响执行顺序。它有效地包围了。所以你的表达等同于:

boolean bool = (a = true) || ((b = true) && (c = true));

... 仍然首先执行 a = true。到那时,由于结果肯定是true并且||是短路的,所以||的右操作数不是已执行,所以 bc 为 false。

来自 JLS section 15.7.1 :

The left-hand operand of a binary operator appears to be fully evaluated before any part of the right-hand operand is evaluated.

优先级与此无关。

关于使用 AND 和 OR 的 Java 表达式评估顺序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20272198/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com