C 语言中运算符用于对数据进行操作,它们是构建表达式的基本组成部分。本文将详细介绍各种运算符,包括算术、赋值、比较、逻辑、位以及其它运算符,并提供示例和参考资料,帮助你全面掌握 C 运算符的使用。


目录

  1. 运算符概述
  2. 算术运算符
  3. 赋值运算符
  4. 比较(关系)运算符
  5. 逻辑运算符
  6. 位运算符
  7. 其他运算符
  8. 代码示例
  9. 参考资料

1. 运算符概述

运算符用于在表达式中执行各种操作,如计算、比较、逻辑判断等。每种运算符都有固定的优先级和结合性,理解这些规则有助于正确书写复杂表达式。
🔗 内部链接


2. 算术运算符

算术运算符主要用于进行数学计算,包括加、减、乘、除和取模操作。

运算符描述示例
+加法a + b
-减法a - b
*乘法a * b
/除法a / b
%取模(余数)a % b

示例:

int a = 10, b = 3;
int sum = a + b;      // 13
int diff = a - b;     // 7
int prod = a * b;     // 30
int quot = a / b;     // 3 (整数除法)
int rem = a % b;      // 1


3. 赋值运算符

赋值运算符用于将右侧的值赋给左侧的变量。除了基本赋值符 = 外,还有复合赋值运算符。

运算符描述示例
=基本赋值a = 5;
+=加后赋值a += 3; (相当于 a = a + 3;
-=减后赋值a -= 2; (相当于 a = a - 2;
*=乘后赋值a *= 4; (相当于 a = a * 4;
/=除后赋值a /= 2; (相当于 a = a / 2;
%=取模后赋值a %= 3; (相当于 a = a % 3;

4. 比较(关系)运算符

比较运算符用于比较两个值,并返回布尔结果(在 C 中通常为 0 表示假,非 0 表示真)。

运算符描述示例
==等于a == b
!=不等于a != b
<小于a < b
>大于a > b
<=小于或等于a <= b
>=大于或等于a >= b

示例:

if (a == b) {
    // 当 a 等于 b 时执行
}

if (a != b) {
    // 当 a 不等于 b 时执行
}


5. 逻辑运算符

逻辑运算符用于连接多个条件表达式,并返回逻辑值。

运算符描述示例
&&逻辑与(a > 0) && (b > 0)
``
!逻辑非!(a > 0)

示例:

if ((a > 0) && (b > 0)) {
    // 当 a 和 b 都大于 0 时执行
}

if (!(a > b)) {
    // 当 a 不大于 b 时执行
}


6. 位运算符

位运算符直接对整数的二进制表示进行操作,非常适合底层编程和优化。

运算符描述示例
&位与a & b
``位或
^位异或a ^ b
~位取反~a
<<左移a << 2
>>右移a >> 2

示例:

unsigned int a = 5;   // 二进制:0000 0101
unsigned int b = 9;   // 二进制:0000 1001

unsigned int result_and = a & b;   // 0000 0001 -> 1
unsigned int result_or = a | b;    // 0000 1101 -> 13
unsigned int result_xor = a ^ b;   // 0000 1100 -> 12
unsigned int result_not = ~a;      // 1111 1010 -> 取决于数据类型宽度


7. 其他运算符

C 语言还提供一些特殊用途的运算符:

  • 自增和自减运算符
    • ++:前置自增和后置自增
    • --:前置自减和后置自减
      示例:
    int i = 5; i++; // 后置自增,先使用 i 的当前值,再加 1 ++i; // 前置自增,先加 1,再使用 i 的新值
  • 条件运算符(三元运算符)
    • 格式:条件 ? 表达式1 : 表达式2
      示例:
    int max = (a > b) ? a : b;
  • 逗号运算符
    • 用于在一个表达式中顺序执行多个操作,返回最后一个操作的结果。
      示例:
    int a, b, c; c = (a = 5, b = 10, a + b); // c 等于 15
  • sizeof 运算符
    • 返回数据类型或变量所占的字节数。
      示例:
    int size = sizeof(int); // 通常返回 4
  • 指针运算符
    • 取地址运算符 & 和解引用运算符 *,用于处理指针。
      示例:
    int x = 10; int *ptr = &x; printf("%d\n", *ptr); // 输出 10

8. 代码示例

下面的示例综合展示了各种运算符的使用:

#include <stdio.h>

int main() {
    // 算术运算符
    int a = 10, b = 3;
    printf("a + b = %d\n", a + b);
    printf("a - b = %d\n", a - b);
    printf("a * b = %d\n", a * b);
    printf("a / b = %d\n", a / b);
    printf("a %% b = %d\n", a % b);

    // 赋值运算符
    int c = 5;
    c += 3;  // c = 8
    printf("c = %d\n", c);

    // 比较运算符
    if (a > b)
        printf("a 大于 b\n");

    // 逻辑运算符
    if ((a > 0) && (b > 0))
        printf("a 和 b 都大于 0\n");

    // 位运算符
    unsigned int d = 5;    // 0000 0101
    unsigned int e = 9;    // 0000 1001
    printf("d & e = %u\n", d & e);  // 输出 1
    printf("d | e = %u\n", d | e);  // 输出 13

    // 三元运算符
    int max = (a > b) ? a : b;
    printf("max = %d\n", max);

    // 自增、自减和 sizeof
    int f = 7;
    printf("f++ = %d, ++f = %d\n", f++, ++f);
    printf("sizeof(f) = %zu\n", sizeof(f));

    return 0;
}


9. 参考资料


通过熟练掌握 C 运算符及其优先级和结合性,你将能够编写出更高效、易于理解的代码。深入学习其它主题,如 C 数据类型指南C 变量指南 将进一步提升你的编程技能。Happy coding!