• 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 * ba / ba % b
  • 加法、减法 +-
    a + ba - b

4. 移位运算符

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

5. 关系运算符

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

  • 小于、小于等于 <<=
    a < ba <= b
  • 大于、大于等于 >>=
    a > ba >= 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 条评论

目前还没有评论...