逻辑运算符的优先顺序用法介绍(c逻辑运算符的优先顺序)

一、 “!” 的优先级

逻辑“非”运算符 “!”的优先级最高,其作用是对一个布尔值取反。例如:

boolean a = true;
boolean b = !a; // b = false

可以发现, “!” 取反操作是在 b 赋值之前完成的。因此在使用逻辑运算符时,应注意“!”的优先级,正确地使用括号,以避免产生意想不到的错误。

二、 “&&” 的优先级

逻辑“与”运算符 “&&” 的优先级高于逻辑“或”运算符 “||”。例如:

boolean a = true, b = false, c = true;
if (a && b || c) { // 相当于 if ((a && b) || c)
    System.out.println("a && b || c");
} else {
    System.out.println("!a && !b && !c");
}

上述代码中,“a && b” 会将结果作为一个整体,与 “c” 进行逻辑“或”操作,即先执行 “&&” 后执行 “||”。

三、 “||” 的优先级

逻辑“或”运算符 “||” 的优先级低于关系运算符(如大于、小于等)和算术运算符(如加、减等)。例如:

int a = 3, b = 4, c = 5;
if (a > b || a + b > c) { 
    System.out.println("a > b || a + b > c");
} else {
    System.out.println("!(a > b || a + b > c)");
}

上述代码中,先进行算术运算,然后再与 “||” 操作一起进行。

四、位运算符与逻辑运算符

需要注意的是,位运算符与逻辑运算符混用时,位运算符的优先级更高。例如:

int a = 3, b = 5;
if ((a & 1) == 1 || (b & 1) == 1) {
    System.out.println("奇数");
} else {
    System.out.println("偶数");
}

在该代码中,如果没有使用括号,会先执行位运算 “&” 操作,而不是逻辑运算 “||” 操作。

五、三目运算符与逻辑运算符

三目运算符“?:”的优先级是比逻辑运算符低的。例如:

boolean a = true, b = false;
int c = a ? 1 : (b ? 2 : 3); // c = 1

可以发现,在三目运算符中,先判断 a 是否成立,如果成立则返回 1,否则再判断 b 是否成立,如果成立则返回 2,否则返回 3。这里优先级更低的是三目运算符,而非逻辑运算符。

Published by

风君子

独自遨游何稽首 揭天掀地慰生平