第四章——选择结构 第一节——关系运算
逻辑值
在C语言中,逻辑值是表示条件判断结果的基本数据类型,其本质是整型数值:
核心概念
传统表示:
- 逻辑真:任意非0整数(如1, -1, 2等)
- 逻辑假:0
C99标准扩展:
- 使用
bool类型(需包含<stdbool.h>) - 特殊常量:
true(等价1)和false(等价0)
- 使用
简单示例
1 |
|
关系运算
在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,而非比较)- 浮点数(如
float、double)的比较需谨慎,直接使用==可能因精度问题导致错误,建议使用范围比较(如fabs(a - b) < 1e-6)
2. 优先级
关系运算符之间的优先级:
- 前4个运算符(
<、<=、>、>=)的优先级相同。 - 后2个运算符(
==、!=)的优先级相同。 - 前4个运算符的优先级高于后2个运算符。
- 前4个运算符(
与其他运算符的优先级:
- 低于算术运算符(如
+、*)。 - 高于赋值运算符(如
=)。 - 低于逻辑运算符(如
&&、||)。
- 低于算术运算符(如
示例:
1 | int a = 3, b = 4; |
3. 关系表达式
关系表达式是通过关系运算符将两个表达式连接起来的表达式,其值为逻辑值(0或1)。
示例:
1 |
|
复杂表达式:
1 | int num1 = 3, num2 = 4, num3 = 5; |
4. 注意事项
避免浮点数的直接比较:
1
2
3
4float a = 1.0 / 3.0 * 3.0;
if (a == 1.0) { ... } // 可能因精度问题导致错误
// 推荐使用范围比较:
if (fabs(a - 1.0) < 1e-6) { ... }逻辑值的隐式转换:
- C语言中没有布尔类型(C99之前),所有非0值均视为真,0视为假。
- 关系表达式的结果为0或1(逻辑假或逻辑真)。
避免链式比较:
1
2
3int a = 0, b = 0.5, x = 0.3;
int result = a <= x <= b; // 结果为 0(错误!)
// 正确写法应为:(a <= x) && (x <= b)常见错误:
- 错误使用
=而非==: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 进行许可。