首页 > 编程笔记 > C语言笔记(精华版)

C语言关系运算符的优先级(附带示例)

在C语言中,关系运算符用来比较两个值的大小,它们的优先级对于编写正确的表达式至关重要。


C语言中的关系运算符包括:大于 (>)、小于 (<)、大于等于 (>=)、小于等于 (<=)、等于 (==) 和不等于 (!=)。这些运算符在条件语句和循环中频繁使用,用于比较两个值之间的关系。


关系运算符的优先级如下(从高到低):

> 和 <
>= 和 <=
== 和 !=

值得注意的是,所有关系运算符的优先级都低于算术运算符,但高于赋值运算符。这意味着在复杂表达式中,算术运算会先执行,然后是关系运算,最后是赋值操作。


让我们通过一些示例来理解这些优先级规则:

#include 

int main() {
    int a = 5, b = 3, c = 7;
    
    printf("%d\n", a > b);  // 输出 1(真)
    printf("%d\n", a < c);  // 输出 1(真)
    printf("%d\n", a >= b + 2);  // 输出 1(真)
    printf("%d\n", a == b);  // 输出 0(假)
    printf("%d\n", a != c - 2);  // 输出 0(假)
    
    return 0;
}
输出结果:
1
1
1
0
0

在上面的例子中,我们可以看到关系运算符的基本用法。注意a >= b + 2这个表达式,加法运算b + 2会先执行,然后再与 a 进行比较。


现在,让我们看一个更复杂的例子,涉及多个关系运算符:

#include 

int main() {
    int x = 5, y = 3, z = 7;
    
    printf("%d\n", x > y == z < 10);  // 输出 1
    printf("%d\n", x > y != z < 10);  // 输出 0
    printf("%d\n", x >= y + 1 < z - 2);  // 输出 0
    
    return 0;
}
输出结果:
1
0
0

在这个例子中,我们可以看到多个关系运算符组合使用时的情况。表达式 x > y == z < 10 会先计算 x > y(结果为 1)和 z < 10(结果为 1),然后比较这两个结果是否相等。由于两者都为 1,所以最终结果为 1(真)。


理解关系运算符的优先级对于编写复杂的条件语句非常重要。如果不确定运算顺序,最好使用括号来明确表达你的意图,例如,(x > y) == (z < 10) 比不使用括号的写法更清晰。


在实际编程中,我们常常会在 if 语句或循环条件中使用关系运算符,例如:

#include 

int main() {
    int age = 25;
    
    if (age >= 18 && age <= 60) {
        printf("你处于工作年龄段。\n");
    } else {
        printf("你不在工作年龄段。\n");
    }
    
    return 0;
}
输出结果:
你处于工作年龄段。

在这个例子中,我们使用了关系运算符和逻辑运算符的组合。关系运算符的优先级高于逻辑运算符,所以 age >= 18age <= 60 会先计算,然后再进行逻辑与运算。

推荐阅读