算术比较(关系运算符)
C语言提供了6个关系运算符用于进行数值的大小比较,具体如表3-1所示:
| 运算符 | 含义(比较) | 示例 | 结果(真=1,假=0) |
|---|---|---|---|
< | 左操作数小于右操作数 | 2 < 3 | 1 (true) |
<= | 左操作数小于等于右操作数 | 5 <= 5 | 1 (true) |
== | 左操作数等于右操作数 | 2 == 3 | 0 (false) |
!= | 左操作数不等于右操作数 | 2 != 3 | 1 (true) |
> | 左操作数大于右操作数 | 5L > 3L | 1 (true) |
>= | 左操作数大于等于右操作数 | 6 >= 12 | 0 (false) |
1. 运算结果与类型
- 返回值类型:关系运算的结果本质是
int类型。 - 真/假表示:比较为真时结果为
1,为假时结果为0。 - 布尔映射:若引入
<stdbool.h>,1对应true,0对应false。
2. 逻辑/布尔表达式与存储
包含关系运算符的表达式称为逻辑表达式或布尔表达式(结果只有两种状态)。它们可以直接赋值给 bool 类型变量:
#include <stdio.h>
#include <stdbool.h> // 需引入以使用 bool, true, false
int main(void)
{
bool result = 5 < 4; // 5小于4为假,result 存储为 0 (false)
printf("%d\n", result); // 输出 0
bool valid = 2 != 3; // 2不等于3为真,valid 存储为 1 (true)
printf("%d\n", valid); // 输出 1
return 0;
}Code language: PHP (php)
非0即真规则:任何非0值赋给 bool 变量都会转换为 true(存储为1),0转换为 false(存储为0)。
3. 核心易错点:== 与 = 的区别
==(双等号):关系运算符,用于判断左右两边的值是否相等。=(单等号):赋值运算符,用于赋值。
经典陷阱:
int a = 5;
if (a = 3) { ... } // 错误:把3赋值给a,表达式值为3(非0即真),条件永远成立
if (a == 3) { ... } // 正确:判断a是否等于3Code language: JavaScript (javascript)
4. 代码示例解析
原文示例代码:
#include <stdio.h>
#include <math.h> // 本例未用到数学函数,可省略
#include <stdbool.h> // 使用 bool 类型必须包含
int main(void)
{
bool result = 1 <= 3; // 1小于等于3,条件成立,结果为1 (true)
printf("%d", result); // 输出 1
return 0;
}Code language: PHP (php)
5. 补充实例与注意事项
| 表达式 | 结果 | 说明 |
|---|---|---|
2 != 3 | 1 (true) | 不相等成立 |
5L > 3L | 1 (true) | 长整型比较,成立 |
6 <= 12 | 1 (true) | 成立 |
2 == 3 | 0 (false) | 不相等,为假 |
5 < 4 | 0 (false) | 不成立 |
1.2 >= 1.3 | 0 (false) | 浮点数比较,不成立 |