C 语言 - 条件中的逻辑运算符

条件中的逻辑运算符

您可以使用逻辑运算符组合或反转条件。它们与 ifelseelse if 协同工作,以构建更复杂的决策。

  • &&(与)- 所有条件都必须为真
  • ||(或)- 至少有一个条件必须为真
  • !(非)- 反转条件(真 → 假,假 → 真)

与 (&&)

当两个条件必须为真时,使用 与 (&&):

实例

测试 a 是否大于 b,并且 c 是否大于 a:

int a = 200;
int b = 33;
int c = 500;

if (a > b && c > a) {
  printf("Both conditions are true\n");
}

亲自试一试

或 (||)

至少有一个条件可以为真时,使用 或 (||):

实例

测试 a 是否大于 b,或者 a 是否大于 c:

int a = 200;
int b = 33;
int c = 500;

if (a > b || a > c) {
  printf("At least one condition is true\n");
}

亲自试一试

非 (!)

非运算符(!反转条件:

  • 如果条件为 true! 使其为假。
  • 如果条件为 false! 使其为真。

这在您想要检查某事物不成立时很有用:

实例

测试 a 不大于 b:

int a = 33;
int b = 200;

if (!(a > b)) { 
  printf("a is NOT greater than b\n");
}

亲自试一试

实际应用示例

在实际程序中,逻辑运算符常用于访问控制。例如,要获得对系统的访问权限,需要满足特定要求:

您必须已登录,并且需要是管理员,或者具有高级安全许可(级别 1 或 2):

实例

bool isLoggedIn = true;
bool isAdmin = false;
int securityLevel = 3; // 1 = 最高级别

if (isLoggedIn && (isAdmin || securityLevel <= 2)) {
  printf("Access granted\n");
} else {
  printf("Access denied\n");
}

// 尝试更改 securityLevel 和 isAdmin 以测试不同

结果:

// securityLevel 1 = Access granted // securityLevel 2 = Access granted // securityLevel 3 = Access denied // securityLevel 4 = Access denied // 如果 isAdmin = true,则 access is granted.

亲自试一试