布尔表达式的编译错误

uml*_*uml 0 java boolean compilation

这是一段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);     
    }
Run Code Online (Sandbox Code Playgroud)

它没有编译,有什么问题?错误:此行上有多个标记; 'bool'变量行上的语法错误.我希望它能打印出来true, false, true.虽然根据我的教程书打印true, false, false.

我知道它会执行短路但是在&&双方都需要进行评估的情况下.那不是作业,我正在学习Java.干杯

Roh*_*ain 6

(a = true) || (b = true) && (c = true);
Run Code Online (Sandbox Code Playgroud)

相当于: -

(a = true) || ((b = true) && (c = true));
Run Code Online (Sandbox Code Playgroud)

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

因此,最后两项任务不会发生.而价值bc保持false.

注: -短路运营商- &&||,如果某一结果可以通过之前的评测中获得不进一步评估.

所以: -

  • a && b如果a是假的,则不会评估b.

  • a || b如果a为真,则不会评估b.