小编典典

布尔表达式的编译错误

java

这是一段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。干杯


阅读 280

收藏
2020-11-30

共1个答案

小编典典

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

等效于:-

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

由于(a = true)被评估为true,因此第二个表达式不被评估,因为在那里您使用了 短路运算符(||)

因此,最后两个任务不会发生。和值bc保持false

注意:- 短路算子- &&||,如果可以通过先前的评估获得特定结果,则不会进一步评估。

所以:-

  • a && b如果 a 为假,则不会计算 b 。 __

  • a || b如果 a 为true ,则不会计算 b 。 __

2020-11-30