第四章——选择结构 第一节——关系运算

第四章——选择结构 第一节——关系运算

亓翎_Re-Tikara Lv5

逻辑值

  在C语言中,逻辑值是表示条件判断结果的基本数据类型,其本质是整型数值:

核心概念

  • 传统表示

    • 逻辑真:任意非0整数(如1, -1, 2等)
    • 逻辑假:0
  • C99标准扩展

    • 使用bool类型(需包含<stdbool.h>
    • 特殊常量:true(等价1)和false(等价0)

简单示例

1
2
3
4
5
6
7
8
9
10
#include <stdio.h>
#include <stdbool.h>

int main() {
bool flag = true; // 布尔值赋值
if (flag) { // 非0值触发条件
printf("条件成立\n");
}
return 0;
}

关系运算

  在C语言中,关系运算(也称为比较运算)用于比较两个数据的大小或相等性,其结果为逻辑值(0或非0)。

1. 关系运算符

  C语言提供了6种关系运算符:

运算符 含义 示例 说明
< 小于 a < b 如果 a 小于 b,结果为1(真),否则为0(假)
<= 小于等于 a <= b 如果 a 小于等于 b,结果为1,否则为0
> 大于 a > b 如果 a 大于 b,结果为1,否则为0
>= 大于等于 a >= b 如果 a 大于等于 b,结果为1,否则为0
== 等于 a == b 如果 a 等于 b,结果为1,否则为0
!= 不等于 a != b 如果 a 不等于 b,结果为1,否则为0

⚠️ 注意

  • == 用于判断相等性,而 = 是赋值运算符,两者容易混淆(如 if (a = 5) 会将 a 赋值为5,而非比较)
  • 浮点数(如 floatdouble)的比较需谨慎,直接使用 == 可能因精度问题导致错误,建议使用范围比较(如 fabs(a - b) < 1e-6

2. 优先级

  • 关系运算符之间的优先级

    • 前4个运算符(<<=>>=)的优先级相同。
    • 后2个运算符(==!=)的优先级相同。
    • 前4个运算符的优先级高于后2个运算符。
  • 与其他运算符的优先级

    • 低于算术运算符(如 +*)。
    • 高于赋值运算符(如 =)。
    • 低于逻辑运算符(如 &&||)。

示例

1
2
3
int a = 3, b = 4;
int result1 = a + b > 5; // 等价于 (a + b) > 5 → (7 > 5) → 1
int result2 = a == b + 1; // 等价于 a == (b + 1) → 3 == 5 → 0

3. 关系表达式

  关系表达式是通过关系运算符将两个表达式连接起来的表达式,其值为逻辑值(0或1)。

示例

1
2
3
4
5
6
7
8
#include <stdio.h>

int main() {
int a = 5, b = 3;
int result = (a > b); // 比较 a 和 b 的大小
printf("%d\n", result); // 输出 1(真)
return 0;
}

复杂表达式

1
2
3
4
int num1 = 3, num2 = 4, num3 = 5;
// 表达式 (num1 > num2) 的值为 0(假)
// 表达式 (num1 < num2 < num3) 的值为 1(真)
// 表达式 (num1 < num2) + num3 的值为 6(1 + 5)

4. 注意事项

  1. 避免浮点数的直接比较

    1
    2
    3
    4
    float a = 1.0 / 3.0 * 3.0;
    if (a == 1.0) { ... } // 可能因精度问题导致错误
    // 推荐使用范围比较:
    if (fabs(a - 1.0) < 1e-6) { ... }
  2. 逻辑值的隐式转换

    • C语言中没有布尔类型(C99之前),所有非0值均视为真,0视为假。
    • 关系表达式的结果为0或1(逻辑假或逻辑真)。
  3. 避免链式比较

    1
    2
    3
    int a = 0, b = 0.5, x = 0.3;
    int result = a <= x <= b; // 结果为 0(错误!)
    // 正确写法应为:(a <= x) && (x <= b)
  4. 常见错误

    • 错误使用 = 而非 ==
      1
      if (a = 5) { ... } // 实际是赋值,而非比较

总结

  • 关系运算符用于比较两个值的大小或相等性,结果为逻辑值(0或1)。
  • 优先级规则需特别注意,避免因优先级错误导致逻辑错误。
  • 关系表达式可描述单一条件,但无法直接组合多个条件(需结合逻辑运算符)。
  • 避免常见错误:浮点数比较、链式比较、混淆 ===
  • 标题: 第四章——选择结构 第一节——关系运算
  • 作者: 亓翎_Re-Tikara
  • 创建于 : 2026-02-07 02:21:28
  • 更新于 : 2026-02-10 02:48:46
  • 链接: https://re-tikara.fun/Blog/posts/ee89cbc6/
  • 版权声明: 本文章采用 CC BY-NC-SA 4.0 进行许可。