C 语言中的关系运算符
C 语言中的关系运算符用于比较两个值。除了常见的尖括号 < 和 > 之外,还有一些其他运算符,如下表所示。
这些关系运算符用于布尔表达式。所有关系运算符的计算结果均为 True 或 False。
C 语言没有布尔数据类型。相反,"0"被解释为 False,任何非零值都被视为 True。
示例 1
以下是 C 语言中关系运算符的一个简单示例 -
#include <stdio.h> int main(){ int op1 = 5; int op2 = 3; printf("op1: %d op2: %d op1 < op2: %d ", op1, op2, op1 < op2); return 0; }
输出
运行代码并检查其输出 −
op1: 5 op2: 3 op1 < op2: 0
关系运算符在 C 语言的决策控制和循环语句中起着重要作用。
下表列出了 C 语言中的所有关系运算符 -
运算符 | 描述 | 示例 |
---|---|---|
== | 检查两个操作数的值是否相等。如果相等,则条件成立。 | (A == B) |
!= | 检查两个操作数的值是否相等。如果值不相等,则条件成立。 | (A != B) |
> | 检查左操作数的值是否大于右操作数的值。如果是,则条件成立。 | (A > B) |
< | 检查左操作数的值是否小于右操作数的值。如果是,则条件成立。 | (A < B) |
>= | 检查左操作数的值是否大于或等于右操作数的值。如果是,则条件成立。 | (A >= B) |
<= | 检查左操作数的值是否小于或等于右操作数的值。如果是,则条件成立。 | (A <= B) |
所有关系运算符都是二元运算符。由于它们执行比较操作,因此两边都需要两个操作数。
在 C 语言中,我们使用 = 符号作为赋值运算符。因此,C 语言使用 "=="(双等号)作为相等运算符。
尖括号 > 和 < 分别用作"大于"和"小于"运算符。当它们与 "=" 符号组合时,它们分别构成表示"大于等于"的 ">=" 运算符和表示"小于等于"的 "<=" 运算符。
最后,前缀为 "!" 的 "=" 符号(!=) 用作不等式运算符。
示例 2
以下示例展示了所有正在使用的关系运算符。
#include <stdio.h> int main(){ int a = 21; int b = 10; int c ; printf("a: %d b: %d ", a,b); if(a == b){ printf("Line 1 - a is equal to b " ); } else { printf("Line 1 - a is not equal to b " ); } if (a < b){ printf("Line 2 - a is less than b " ); } else { printf("Line 2 - a is not less than b " ); } if (a > b){ printf("Line 3 - a is greater than b " ); } else { printf("Line 3 - a is not greater than b " ); } /* Lets change value of a and b */ a = 5; b = 20; printf("a: %d b: %d ", a,b); if (a <= b){ printf("Line 4 - a is either less than or equal to b " ); } if (b >= a){ printf("Line 5 - b is either greater than or equal to b " ); } if(a != b){ printf("Line 6 - a is not equal to b " ); } else { printf("Line 6 - a is equal to b " ); } return 0; }
输出
运行此代码时,将产生以下输出 -
a: 21 b: 10 Line 1 - a is not equal to b Line 2 - a is not less than b Line 3 - a is greater than b a: 5 b: 20 Line 4 - a is either less than or equal to b Line 5 - b is either greater than or equal to b Line 6 - a is not equal to b
示例 3
== 运算符需要谨慎使用。请记住,在 C 语言中,"="是赋值运算符。如果错误地将其用作相等运算符,则会得到如下错误输出:
#include <stdio.h> int main(){ int a = 5; int b = 3; if (a = b){ printf("a is equal to b"); } else { printf("a is not equal to b"); } return 0; }
输出
"b"的值被赋给非零的"a",因此 if 表达式返回 true。
a is equal to b
示例 4
我们也可以使用"char"类型作为所有关系运算符的操作数,因为"char"类型是"int"类型的子集。请看这个示例 -
#include <stdio.h> int main(){ char a = 'B'; char b = 'd'; printf("a: %c b: %c ", a,b); if(a == b){ printf("Line 1 - a is equal to b "); } else { printf("Line 1 - a is not equal to b "); } if (a < b){ printf("Line 2 - a is less than b "); } else { printf("Line 2 - a is not less than b "); } if (a > b) { printf("Line 3 - a is greater than b "); } else { printf("Line 3 - a is not greater than b "); } if(a != b) { printf("Line 4 - a is not equal to b "); } else { printf("Line 4 - a is equal to b "); } return 0; }
输出
运行代码并检查其输出 −
a: B b: d Line 1 - a is not equal to b Line 2 - a is less than b Line 3 - a is not greater than b Line 4 - a is not equal to b
关系运算符不能用于比较次要类型(例如数组)或派生类型(例如结构体或联合体类型)。