3.2 KiB
3.2 KiB
C 语言中的关系运算符
原文:https://overiq.com/c-programming-101/relational-operators-in-c/
最后更新于 2020 年 7 月 27 日
关系运算符用于比较两个表达式的值。关系运算符是二进制运算符,因为它们需要两个操作数来操作。包含关系运算符的表达式称为关系表达式。如果关系为真,则关系表达式的结果为1,如果关系为假,则关系表达式的结果为0。
下表列出了关系运算符以及一些示例:
| 操作员 | 描述 | 例子 | 结果 |
|---|---|---|---|
> |
大于 | 1 > 2 |
0 |
>= |
大于或等于 | 3 >= 2 |
1 |
< |
小于 | 10 < 5 |
0 |
<= |
小于或等于 | 6 <= 7 |
1 |
== |
等于 | 98==98 |
1 |
!= |
不等于 | 10 != 9 |
1 |
在 C 中,所有非零值被认为是真,而0被认为是假。以下程序演示了关系运算符的作用:
#include<stdio.h>
int main()
{
int x = 12, y = 13;
printf("x = %d\n", x);
printf("y = %d\n\n", y);
// Is x is greater than y?
printf("x > y : %d\n", x > y);
// Is x is greater than or equal to y?
printf("x >= y : %d\n", x >= y);
// Is x is smaller than y?
printf("x < y : %d\n", x < y);
// Is x is smaller than or equal to y?
printf("x <= y : %d\n", x <= y);
// Is x is equal to y?
printf("x == y : %d\n", x == y);
// Is x is not equal to y?
printf("x != y : %d\n", x != y);
// Signal to operating system everything works fine
return 0;
}
预期输出:
x = 12
y = 13
x > y : 0
x >= y : 0
x < y : 1
x <= y : 1
x == y : 0
x != y : 1
优先
<、<=、>和>=操作符的优先级相同,从左到右关联。然而,==和!=的优先级比其他关系运算符低,它们从左到右关联。关系运算符的优先级低于算术运算符。
为了清楚起见,让我们评估一些涉及关系运算符的表达式:
例 1 :
4 + 2 * 3 > 12 - 2
第一步:评估2 * 3。
4 + 6 > 12 - 2
第二步:评估4 + 6,然后是12 - 2。
10 > 10
第三步:10不大于10,所以上面的表达式计算为假(0)。因此整个表达式的结果是0。
结果:
4 + 2 * 3 > 12 - 2 => 0
例 2 :
(4 % 2 == 0) <= (8 * 2)
步骤 1:括号操作符具有最高的优先级,它从左向右关联。所以表达式(4 % 2 == 0)将首先被求值。%运算符的优先级高于等于==运算符。因此,首先应用%运算符,然后应用==运算符。表达式现在变成:
(4 % 2 == 0) <= (8 * 2)
=> (0 == 0) <= (8 * 2)
=> 1 <= (8 * 2)
第二步:评估(8 * 2)。
1 <= (8 * 2)
=> 1 <= 16
第三步:1小于16。所以上面的表达式评估为真(1)。因此整个表达式的结果是真的。
结果:
(4 % 2 == 0) <= (8 * 2) => 0
不要将赋值运算符(=)与等于运算符(==)混淆。第一个用于给变量赋值,第二个用于测试两个值是否相等。
要充分利用关系运算符,您必须学习如何使用 if-else 语句。if-else 语句在 If… else 语句 C 章节中详细讨论。