0%

逻辑运算符

逻辑运算符:规则、优先级与应用

逻辑运算符是程序设计中用于处理布尔值(真 / 假)运算的核心工具,主要包括逻辑与(&&)、逻辑或(||)、逻辑非(!) 三种,它们的运算规则和优先级直接影响表达式的执行结果。

三种逻辑运算符的运算规则

1. 逻辑与(&&,相当于 AND)

  • 运算规则:当且仅当两个操作数都为 “真(true)” 时,结果才为 “真”;只要有一个操作数为 “假(false)”,结果就为 “假”。

  • 真值表

    | 操作数 A | 操作数 B | A && B |
    | ———— | ———— | ——— |
    | true | true | true |
    | true | false | false |
    | false | true | false |
    | false | false | false |

  • 示例
    (5 > 3) && (2 < 4)true && true → 结果为 true
    (5 > 10) && (2 < 4)false && true → 结果为 false

  • 短路特性:如果第一个操作数为false,则不再判断第二个操作数(因为结果已确定为false)。
    例如:(5 > 10) && (a = 3) → 由于5>10falsea=3不会执行,a的值不变。

2. 逻辑或(||,相当于 OR)

  • 运算规则:只要两个操作数中有一个为 “真”,结果就为 “真”;当且仅当两个操作数都为 “假” 时,结果才为 “假”。

  • 真值表

    | 操作数 A | 操作数 B | A || B |
    |————-|————-|————|
    | true | true | true |
    | true | false | true |
    | false | true | true |
    | false | false | false |

  • 示例
    (5 > 10) || (2 < 4)false || true → 结果为 true
    (5 > 10) || (2 > 4)false || false → 结果为 false

  • 短路特性:如果第一个操作数为true,则不再判断第二个操作数(因为结果已确定为true)。
    例如:(5 > 3) || (a = 3) → 由于5>3truea=3不会执行,a的值不变。

3. 逻辑非(!,相当于 NOT)

  • 运算规则:对操作数的布尔值取反,“真” 变 “假”,“假” 变 “真”。

  • 真值表

    | 操作数 A | !A |
    | ———— | ——- |
    | true | false |
    | false | true |

  • 示例
    !(5 > 3)!true → 结果为 false
    !(5 > 10)!false → 结果为 true

逻辑运算符的优先级

在复杂表达式中,运算符的优先级决定了执行顺序,逻辑运算符的优先级从高到低为:
逻辑非(!) > 算术运算符(*、/、+、-) > 关系运算符(>、<、==、!=)> 逻辑与(&&) > 逻辑或(||)

优先级示例解析

  1. 表达式:! (3 + 2 > 5) && 4 < 6
    • 步骤 1:先算算术运算 3+2=5
    • 步骤 2:再算关系运算 5>5false
    • 步骤 3:再算逻辑非 !falsetrue
    • 步骤 4:再算关系运算 4<6true
    • 步骤 5:最后算逻辑与 true && truetrue
  2. 表达式:3 > 1 || 2 == 5 && !false
    • 步骤 1:先算逻辑非 !falsetrue
    • 步骤 2:再算关系运算 2==5false
    • 步骤 3:再算逻辑与 false && truefalse
    • 步骤 4:再算关系运算 3>1true
    • 步骤 5:最后算逻辑或 true || falsetrue

注意:可通过括号(()) 改变优先级,括号内的表达式优先执行。例如:(3 > 1 || 2 == 5) && !false → 结果为 true && true = true(与上例结果不同,因括号改变了执行顺序)。

逻辑运算符的应用场景

  1. 条件判断:在ifwhile等语句中,用于组合多个条件。
    例如:判断一个数是否在 1~100 之间(含边界):
    if (num >= 1 && num <= 100) { ... }
  2. 状态校验:验证多个条件是否同时满足或至少满足一个。
    例如:用户登录时,用户名和密码都正确才允许登录:
    if (username == "admin" && password == "123456") { ... }
  3. 短路控制:利用&&||的短路特性,简化代码(避免冗余的if判断)。
    例如:当a不为null时,才执行a.doSomething()
    if (a != null) { a.doSomething(); } → 可简化为 a != null && a.doSomething();

欢迎关注我的其它发布渠道