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 ^
按位包含或 |
逻辑和&&
逻辑或 ||