什么是关系运算符?
关系运算符,也称为比较运算符,用于比较两个值之间的关系,比较的结果是一个布尔值,在 C 语言中,它用整数来表示:

(图片来源网络,侵删)
- 真:当关系成立时,结果为 1。
- 假:当关系不成立时,结果为 0。
关系运算符通常用于 if、while、for 等控制语句中,以决定程序的执行流程。
C 语言中的关系运算符列表
C 语言提供了以下 6 个关系运算符:
| 运算符 | 名称 | 示例 | 描述 | 结果示例 (假设 a=5, b=3) |
|---|---|---|---|---|
| 等于 | a == b |
检查 a 的值是否等于 b 的值。 |
5 == 3 结果为 0 (假) |
|
| 不等于 | a != b |
检查 a 的值是否不等于 b 的值。 |
5 != 3 结果为 1 (真) |
|
> |
大于 | a > b |
检查 a 的值是否大于 b 的值。 |
5 > 3 结果为 1 (真) |
< |
小于 | a < b |
检查 a 的值是否小于 b 的值。 |
5 < 3 结果为 0 (假) |
>= |
大于等于 | a >= b |
检查 a 的值是否大于或等于 b 的值。 |
5 >= 3 结果为 1 (真) |
<= |
小于等于 | a <= b |
检查 a 的值是否小于或等于 b 的值。 |
5 <= 3 结果为 0 (假) |
关键注意事项(非常重要!)
1 区分 (等于) 和 (赋值)
这是初学者最容易犯的错误之一。
- 是关系运算符,用于比较两个值是否相等,返回 1 或 0。
- 是赋值运算符,用于将右侧的值赋给左侧的变量。
错误示例:

(图片来源网络,侵删)
int a = 5;
if (a = 10) { // 错误!这里是将 10 赋值给 a,然后判断表达式的值
printf("a 的值是 10\n");
}
在这个例子中,a = 10 这个表达式的值就是被赋的值 10,在 C 语言中,任何非零值都被视为“真”。if (10) 永远为真,printf 语句总会被执行。a 的值已经被错误地改成了 10。
正确示例:
int a = 5;
if (a == 10) { // 正确!这里是比较 a 的值是否等于 10
printf("a 的值是 10\n");
} else {
printf("a 的值不是 10\n"); // 这行会执行
}
这里 a == 10 的结果是 0 (假),else 部分的代码会被执行。
2 关系运算符的优先级
关系运算符的优先级低于算术运算符(如 , , , ),但高于赋值运算符()。
示例:
int result = 5 > 3 + 2; // 等价于 5 > (3 + 2) // 3 + 2 的结果是 5 // 所以表达式变为 5 > 5 // 结果是 0 // result 的值被赋为 0
3 关系运算符的结合性
关系运算符的结合性都是从左到右。
示例:
int result = 10 > 5 > 1; // 等价于 (10 > 5) > 1 // 10 > 5 的结果是 1 (真) // 所以表达式变为 1 > 1 // 结果是 0 // result 的值被赋为 0
这可能与你的直觉相反,如果你想要判断一个数是否在某个范围内,x 是否在 5 和 10 之间,不能写成 5 < x < 10,而应该使用逻辑运算符:
if (x > 5 && x < 10) {
// 正确的写法
}
完整代码示例
下面是一个完整的 C 程序,演示了所有关系运算符的使用。
#include <stdio.h>
int main() {
int a = 10;
int b = 20;
int c = 10;
// 打印变量值
printf("a = %d, b = %d, c = %d\n\n", a, b, c);
// 使用关系运算符并打印结果
printf("a == b 的结果是: %d\n", a == b); // 0
printf("a != b 的结果是: %d\n", a != b); // 1
printf("a > b 的结果是: %d\n", a > b); // 0
printf("a < b 的结果是: %d\n", a < b); // 1
printf("a >= c 的结果是: %d\n", a >= c); // 1 (因为 a 等于 c)
printf("a <= c 的结果是: %d\n", a <= c); // 1 (因为 a 等于 c)
// 在 if 语句中的实际应用
if (a < b) {
printf("\nif 条件成立: a 确实小于 b\n");
}
if (a == c) {
printf("if 条件成立: a 确实等于 c\n");
}
if (a > b) {
printf("这条信息不会显示,因为 a > b 为假,\n");
}
return 0;
}
程序输出:
a = 10, b = 20, c = 10
a == b 的结果是: 0
a != b 的结果是: 1
a > b 的结果是: 0
a < b 的结果是: 1
a >= c 的结果是: 1
a <= c 的结果是: 1
if 条件成立: a 确实小于 b
if 条件成立: a 确实等于 c
关系运算符是 C 语言中进行条件判断的基础,记住它们的核心功能是比较并返回 1(真)或 0(假),最关键的实践是严格区分 和 ,避免因赋值操作导致逻辑错误。
