C语言的运算符大全 详解

C语言的运算符是构建程序逻辑和进行数据处理的基础工具,种类丰富且功能各异。以下从运算符的分类、功能、示例及注意事项等方面进行详细讲解:

一、运算符分类与功能

C语言的运算符主要分为以下10类,共34种具体运算符:

  1. 算术运算符
  • 基本算术运算符+(加)、-(减)、*(乘)、/(除)、%(取模)。
  • 自增/自减运算符++(自增)、--(自减)。
  • 示例
    c int a = 5, b = 2; int sum = a + b; // 加法 int quotient = a / b; // 整数除法(结果为2) a++; // a变为6
  1. 关系运算符
  • 功能:比较两个表达式的值,返回布尔值(0为假,非0为真)。
  • 运算符>(大于)、<(小于)、==(等于)、>=(大于等于)、<=(小于等于)、!=(不等于)。
  • 示例
    c if (a > b) { printf("a is greater than b"); }
  1. 逻辑运算符
  • 功能:根据一个或多个条件的逻辑结果执行操作。
  • 运算符&&(逻辑与)、||(逻辑或)、!(逻辑非)。
  • 示例
    c if (a > 0 && b < 10) { printf("Both conditions are true"); }
  1. 位操作运算符
  • 功能:对整数的二进制位进行操作。
  • 运算符&(按位与)、|(按位或)、^(按位异或)、~(按位取反)、<<(左移)、>>(右移)。
  • 示例
    c int x = 5; // 二进制:0101 int y = 3; // 二进制:0011 int z = x & y; // 按位与,结果为1(二进制:0001)
  1. 赋值运算符
  • 功能:将值赋给变量。
  • 运算符=(简单赋值)、+=-=*=/=%=&=|=^=<<=>>=(复合赋值)。
  • 示例
    c int a = 10; a += 5; // a变为15
  1. 条件运算符(三目运算符)
  • 功能:根据条件返回两个值中的一个。
  • 运算符?:
  • 示例
    c int max = (a > b) ? a : b; // 如果a>b,返回a,否则返回b
  1. 逗号运算符
  • 功能:将多个表达式组合成一个表达式,从左到右依次计算,整个表达式的结果为最后一个表达式的结果。
  • 示例
    c int a = (1, 2, 3); // a的值为3
  1. 指针运算符
  • 功能:用于指针操作。
  • 运算符*(取内容)、&(取地址)。
  • 示例
    c int a = 10; int *p = &a; // p存储a的地址 printf("%d", *p); // 输出a的值(10)
  1. 求字节数运算符
  • 功能:计算数据类型所占的字节数。
  • 运算符sizeof
  • 示例
    c printf("%zu", sizeof(int)); // 输出int类型的字节数(通常为4)
  1. 特殊运算符
    • 功能:包括括号()、下标引用[]、成员访问->.等。
    • 示例
      c int arr[5] = {1, 2, 3, 4, 5}; printf("%d", arr[2]); // 输出3

二、运算符优先级与结合性

  • 优先级:决定运算符在表达式中的运算顺序。例如,*/%的优先级高于+-
  • 结合性:当运算符优先级相同时,根据结合性确定运算顺序。大多数运算符为左结合性(从左到右),但单目运算符、条件运算符和赋值运算符为右结合性。
  • 示例
  int a = 1, b = 2, c = 3;
  int result = a + b * c; // 先计算b*c,再与a相加

三、注意事项

  1. 整数除法与取模
  • 当除法运算符/两侧均为整数时,结果为整数(向下取整)。
  • 取模运算符%两侧必须为整数。
  • 示例
    c int a = 7, b = 2; printf("%d", a / b); // 输出3 printf("%d", a % b); // 输出1
  1. 自增/自减运算符的前置与后置
  • 前置(++a):先自增,再参与运算。
  • 后置(a++):先参与运算,再自增。
  • 示例
    c int a = 5, b = a++; // b的值为5,a变为6 int c = ++a; // a先变为7,c的值为7
  1. 逻辑运算符的短路求值
  • &&:若左侧为假,右侧不计算。
  • ||:若左侧为真,右侧不计算。
  • 示例
    c int a = 0, b = 5; if (a && b++) { // a为假,b++不执行 printf("This will not be printed"); } printf("%d", b); // 输出5
  1. 位运算符的注意事项
  • 位运算符操作的是整数的二进制补码形式。
  • 左移运算符<<:左边抛弃,右边补0。
  • 右移运算符>>:算术右移时,左边用符号位填充。

四、总结

  • 运算符是C语言的核心:掌握其分类、功能、优先级和结合性是编程的基础。
  • 实践与调试:通过实际编写代码(如调试运算符优先级、观察自增/自减行为)加深理解。
  • 代码可读性:合理使用括号和复合赋值运算符,避免因优先级误解导致的错误。

通过系统学习运算符,可以编写出更高效、更清晰的C语言程序。建议结合《C Primer Plus》《C和指针》等经典书籍深入学习。

发布日期:
分类:C语言 标签:

发表评论

您的电子邮箱地址不会被公开。 必填项已用*标注