&&&逻辑运算符功能


class BoolArray  {
    boolean [] b = new boolean[3];
    int count = 0;
    void set(int i) 
    {
        b[i] = true;
        ++count;
    }
    public static void main(String [] args) 
    {
        BoolArray ba = new BoolArray();
        ba.set(0);
        ba.set(2);
        ba.test();
    }
    void test() 
    {
        if ( b[0] && b[1] | b[2] )
           count++;
        if ( b[1] && b[(++count - 2)] )
           count += 7;
        System.out.println("count = " + count);
    }
}

在所有这些情况下,

if ( b[0] && b[1] | b[2] )
if ( b[1] && b[0] || b[2] )
if ( b[1] && b[0] || b[2] )

为什么"&&"的短路逻辑在代码到达 if 块内部时不起作用?

还请解释逻辑运算符的执行顺序。

为什么"&&"的短路逻辑不能作为代码工作 到达 if 块内部?

短路逻辑工作正常。 在到达第二个 if 语句之前,count 是 3,它正确地不处理++count并将其保留为 3。

还请解释逻辑运算符的执行顺序。

顺序是:

按位 AND &
按位独占 OR ^
按位包含或 |
逻辑和&&
逻辑或 ||

最新更新