geekdoc-python-zh/docs/overiq/019.md

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 章节中详细讨论。