Java中的运算符优先级和逻辑运算符

问题描述 投票:0回答:1

当我执行下面的代码时,我得到下面给出的输出。但根据java运算符优先级&&的优先级高于||所以首先(boolb = true)&&(boolc = true)应该被评估,但这并没有发生。你能否告诉我原因以及幕后实际发生的事情。

static boolean boola, boolb, boolc;

public static void main(String[] args) {
    boolean bool = (boola = true) || (boolb = true) && (boolc = true);

    System.out.println("" + boola + boolb + boolc);
}

预期结果:truetruetrue

实际结果:truefalsefalse

java logical-operators
1个回答
3
投票

||是一种短路操作。如果它的第一个操作数为真,它甚至不评估第二个操作数。

(boola = true)的值是真的,评估就在那里停止。所以其他布尔值保持其原始值:false。

© www.soinside.com 2019 - 2024. All rights reserved.