C语言关系运算符 #
一、关系运算符概述 #
1.1 关系运算符列表 #
| 运算符 | 名称 | 示例 | 含义 |
|---|---|---|---|
| == | 等于 | a == b | a等于b |
| != | 不等于 | a != b | a不等于b |
| > | 大于 | a > b | a大于b |
| < | 小于 | a < b | a小于b |
| >= | 大于等于 | a >= b | a大于等于b |
| <= | 小于等于 | a <= b | a小于等于b |
1.2 返回值 #
关系表达式的结果是整数:
- 真:返回 1
- 假:返回 0
c
#include <stdio.h>
int main() {
int a = 5, b = 3;
printf("a == b: %d\n", a == b);
printf("a != b: %d\n", a != b);
printf("a > b: %d\n", a > b);
printf("a < b: %d\n", a < b);
printf("a >= b: %d\n", a >= b);
printf("a <= b: %d\n", a <= b);
return 0;
}
输出:
text
a == b: 0
a != b: 1
a > b: 1
a < b: 0
a >= b: 1
a <= b: 0
二、等于运算符 #
2.1 基本使用 #
c
#include <stdio.h>
int main() {
int a = 5, b = 5, c = 3;
printf("a == b: %d\n", a == b);
printf("a == c: %d\n", a == c);
return 0;
}
2.2 注意区分赋值运算符 #
c
if (a = 5) {
printf("总是执行\n");
}
if (a == 5) {
printf("a等于5时执行\n");
}
= 是赋值,== 是比较。
2.3 浮点数比较 #
c
#include <stdio.h>
#include <math.h>
int main() {
float a = 0.1f + 0.2f;
float b = 0.3f;
printf("a = %.20f\n", a);
printf("b = %.20f\n", b);
printf("a == b: %d\n", a == b);
if (fabs(a - b) < 1e-6) {
printf("近似相等\n");
}
return 0;
}
浮点数比较应使用误差范围。
三、不等于运算符 #
3.1 基本使用 #
c
#include <stdio.h>
int main() {
int a = 5, b = 3;
if (a != b) {
printf("a不等于b\n");
}
return 0;
}
3.2 检查指针是否为空 #
c
#include <stdio.h>
#include <stdlib.h>
int main() {
int* p = (int*)malloc(sizeof(int));
if (p != NULL) {
*p = 10;
printf("%d\n", *p);
free(p);
}
return 0;
}
四、大于小于运算符 #
4.1 基本使用 #
c
#include <stdio.h>
int main() {
int a = 5, b = 3;
printf("a > b: %d\n", a > b);
printf("a < b: %d\n", a < b);
printf("a >= b: %d\n", a >= b);
printf("a <= b: %d\n", a <= b);
return 0;
}
4.2 字符比较 #
c
#include <stdio.h>
int main() {
char c1 = 'A', c2 = 'a';
printf("'A' < 'a': %d\n", c1 < c2);
printf("'A' == 65: %d\n", c1 == 65);
return 0;
}
字符按ASCII码值比较。
4.3 字符串比较 #
c
#include <stdio.h>
#include <string.h>
int main() {
char s1[] = "apple";
char s2[] = "banana";
if (strcmp(s1, s2) < 0) {
printf("%s 小于 %s\n", s1, s2);
}
return 0;
}
字符串比较使用 strcmp 函数。
五、链式比较 #
5.1 错误写法 #
c
if (1 < a < 10) {
}
这不会按预期工作,因为 1 < a 返回0或1。
5.2 正确写法 #
c
if (a > 1 && a < 10) {
}
六、C99布尔类型 #
6.1 使用stdbool.h #
c
#include <stdio.h>
#include <stdbool.h>
int main() {
bool a = true;
bool b = false;
printf("true = %d\n", a);
printf("false = %d\n", b);
printf("5 > 3 = %s\n", 5 > 3 ? "true" : "false");
return 0;
}
6.2 布尔表达式 #
c
#include <stdio.h>
#include <stdbool.h>
bool is_even(int n) {
return n % 2 == 0;
}
int main() {
if (is_even(4)) {
printf("4是偶数\n");
}
return 0;
}
七、常见错误 #
7.1 混淆 == 和 = #
c
if (a = 5) {
}
应改为:
c
if (a == 5) {
}
7.2 浮点数直接比较 #
c
float a = 0.1 + 0.2;
if (a == 0.3) {
}
应使用误差比较。
7.3 字符串直接比较 #
c
char s1[] = "hello";
char s2[] = "hello";
if (s1 == s2) {
}
应使用 strcmp。
八、总结 #
关系运算符 #
| 运算符 | 说明 | 返回值 |
|---|---|---|
| == | 等于 | 1或0 |
| != | 不等于 | 1或0 |
| > | 大于 | 1或0 |
| < | 小于 | 1或0 |
| >= | 大于等于 | 1或0 |
| <= | 小于等于 | 1或0 |
注意事项 #
- 区分
==和= - 浮点数使用误差比较
- 字符串使用
strcmp - 链式比较使用
&&
下一步,让我们学习逻辑运算符!
最后更新:2026-03-26