• C
  • C语言常见运算符优先级

  • @ 2025-3-28 0:32:41

在C语言中,运算符的优先级决定了表达式中操作的执行顺序。了解运算符的优先级对于编写正确的代码非常重要。以下是C语言中常见的运算符及其优先级(从高到低排序):


1. 初级优先级

  • 括号 ()
    括号用于明确优先级,括号内的表达式优先计算。
  • 数组下标 []
    用于访问数组元素。
  • 结构体/联合体成员访问 . 和 ->
    . 用于直接访问结构体成员,-> 用于通过指针访问结构体成员。
  • 函数调用 ()
    用于调用函数。

2. 单目运算符

单目运算符优先级较高,通常作用于单个操作数。

  • 后置自增/自减 ++ 和 --
    如 x++ 或 x--。
  • 前置自增/自减 ++ 和 --
    如 ++x 或 --x。
  • 正负号 + 和 -
    如 +5 或 -5。
  • 逻辑非 !
    如 !true。
  • 按位取反 ~
    如 ~0xFF。
  • 类型转换 (type)
    如 (int)3.14。
  • 取地址 &
    如 &x。
  • 解引用 *
    如 *ptr。
  • sizeof
    计算变量或类型的大小,如 sizeof(int)。

3. 算术运算符

算术运算符的优先级次于单目运算符。

  • 乘法、除法、取模 *、/、%
    如 a * b、a / b、a % b。
  • 加法、减法 +、-
    如 a + b、a - b。

4. 移位运算符

  • 左移 <<
    如 a << 2。
  • 右移 >>
    如 a >> 2。

5. 关系运算符

关系运算符用于比较两个值。

  • 小于、小于等于 <、<=
    如 a < b、a <= b。
  • 大于、大于等于 >、>=
    如 a > b、a >= b。

6. 相等运算符

相等运算符用于判断两个值是否相等或不等。

  • 等于 ==
    如 a == b。
  • 不等于 !=
    如 a != b。

7. 位运算符

位运算符用于对整数的二进制位进行操作。

  • 按位与 &
    如 a & b。
  • 按位异或 ^
    如 a ^ b。
  • 按位或 |
    如 a | b。

8. 逻辑运算符

逻辑运算符用于布尔表达式。

  • 逻辑与 &&
    如 a && b。
  • 逻辑或 ||
    如 a || b。

9. 条件运算符

  • 三元运算符 ? :
    如 a > b ? x : y。

10. 赋值运算符

赋值运算符用于给变量赋值。

  • 简单赋值 =
    如 a = 5。
  • 复合赋值 +=、-=、*=、/=、%=、<<=、>>=、&=、^=、|=
    如 a += 5 等价于 a = a + 5。

11. 逗号运算符

  • 逗号 ,
    用于分隔多个表达式,整个表达式的值为最后一个表达式的值。
    如 a = (b = 3, b + 2) 中,a 的值为 5。

总结表

优先级 运算符 说明
1 ()、[]、.、-> 括号、数组、结构体成员访问
2 ++、--、+、-、! 单目运算符
3 *、/、% 算术运算符
4 +、- 加减运算符
5 <<、>> 移位运算符
6 <、<=、>、>= 关系运算符
7 ==、!= 相等运算符
8 & 按位与
9 ^ 按位异或
10 l 按位或
11 && 逻辑与
12 ll 逻辑或
13 ?: 条件运算符
14 =、+=、-= 等 赋值运算符
15 , 逗号运算符

注意事项

  1. 结合性:当运算符优先级相同时,按照结合性决定执行顺序。大多数运算符是从左到右结合(如 + 和 -),但赋值运算符和条件运算符是从右到左结合。
  2. 括号:为了提高代码的可读性,建议使用括号明确优先级,即使某些情况下可以省略括号。
  3. 隐式类型转换:某些运算符(如 / 和 %)可能会涉及隐式类型转换,需注意数据类型。

通过掌握这些运算符的优先级规则,可以避免因优先级错误而导致的程序逻辑问题!

0 条评论

目前还没有评论...