📜  C中的运算符|集合2(关系和逻辑运算符)(1)

📅  最后修改于: 2023-12-03 15:30:14.744000             🧑  作者: Mango

C中的运算符-集合2 (关系和逻辑运算符)

C语言中提供了众多的运算符来完成各种各样的任务。本篇文章将介绍C中关系运算符和逻辑运算符。

关系运算符

关系运算符用于比较两个值的大小或者是否相等。C语言中定义了如下的关系运算符:

| 运算符 | 描述 | | ------ | ------------------------------------------------------------ | | == | 如果两个操作数相等,则条件为真。 | | != | 如果两个操作数不相等,则条件为真。 | | > | 如果左操作数大于右操作数,则条件为真。 | | < | 如果左操作数小于右操作数,则条件为真。 | | >= | 如果左操作数大于或等于右操作数,则条件为真。 | | <= | 如果左操作数小于或等于右操作数,则条件为真。 |

这些关系运算符的结果总是一个布尔值,要么为真,要么为假。比如如下代码:

#define PI 3.14

int main() {
    int a = 5;
    float b = 6.0;
    double c = 7.0;
    char d = 'd';
    printf("a == b: %d\n", a == b); // 0
    printf("b == c: %d\n", b == c); // 0
    printf("c == d: %d\n", c == d); // 0
    printf("a != b: %d\n", a != b); // 1
    printf("b > c: %d\n", b > c); // 0
    printf("c < d: %d\n", c < d); // 0
    printf("a >= b: %d\n", a >= b); // 0
    printf("b <= c: %d\n", b <= c); // 1
    return 0;
}

关系运算符也可以用于比较指针的大小关系,但要保证它们指向同一块内存地址:

int main() {
    int arr[5] = {1, 2, 3, 4, 5};
    int *p = arr + 1, *q = arr + 3;
    printf("p == q: %d\n", p == q); // 0
    printf("p != q: %d\n", p != q); // 1
    printf("p > q: %d\n", p > q); // 0
    printf("p < q: %d\n", p < q); // 1
    return 0;
}
逻辑运算符

逻辑运算符用于连接两个或多个条件,形成更复杂的条件。逻辑运算符分别为:

| 运算符 | 描述 | | ------ | ------------------------------------------------------------ | | && | 逻辑与运算符。如果两个操作数都非零,则条件为真。 | | || | 逻辑或运算符。如果两个操作数中有任意一个非零,则条件为真。 | | ! | 逻辑非运算符。用于反转操作数的逻辑值。如果条件为真,则逻辑非将其变为假。反之亦然。 |

比如如下代码:

int main() {
    int a = 5, b = 6, c = 7;
    printf("a > b && b > c: %d\n", a > b && b > c); // 0
    printf("a > b || b > c: %d\n", a > b || b > c); // 1
    printf("!(a == b): %d\n", !(a == b)); // 1
    printf("!(a > b && b > c): %d\n", !(a > b && b > c)); // 1
    printf("!(a || b): %d\n", !(a || b)); // 0
    return 0;
}

逻辑运算符也可以用于比较指针是否为NULL:

int main() {
    int *p = NULL, *q = (int*)malloc(sizeof(int));
    printf("p && q: %d\n", p && q); // 0
    printf("p || q: %d\n", p || q); // 1
    printf("!(p && q): %d\n", !(p && q)); // 1
    printf("!(p || q): %d\n", !(p || q)); // 0
    free(q);
    return 0;
}

以上就是C中关系运算符和逻辑运算符的使用方法。需要注意的是,C语言中的关系运算符和逻辑运算符只能操作布尔、整型和浮点型数据,不支持对结构体和数组进行运算。