运算符优先级层次图

· · 个人记录

在C++中,运算符的优先级决定了运算的执行顺序。我们可以用金字塔形的层次结构(类似三角形)来直观展示优先级从高到低的递减关系。以下是简化后的C++运算符优先级层次图:

C++ 运算符优先级层次图(金字塔)

                1. 括号 ()  
               2. 后缀运算符 (如 . 、[ ]、++、-- 等)  
             3. 前缀运算符 (如 ++、--、!、~、sizeof 等)  
            4. 一元运算符 (如 +、-、*、/、% 等)  
           5. 乘除运算符 * / %
         6. 加减运算符 + -  
        7. 移位运算符 << >>
       8. 关系运算符 < > <= >= == !=  
      9. 位运算符 & ^ |  
    10. 逻辑运算符 && ||  
  11. 条件运算符 ?:  
12. 赋值运算符 = += -= *= /= %= <<= >>= &= ^= |=  

补充说明

  1. 优先级规则

    • 优先级高的运算符会优先执行(如括号内的内容优先计算)。
    • 同一层次的运算符按结合性(从左到右或从右到左)决定顺序。例如:a + b - c 是从左到右计算的。
  2. 结合性示例

    • 从左到右a - b + c → 先算 a - b,再算结果 + c
    • 从右到左a = b = c → 先算 b = c,再将结果赋值给 a
  3. 常见错误提醒

    • 如果忘记括号的优先级,可能导致计算结果错误。例如:
      int result = 5 + 3 * 2; // 优先级高,结果是 11(先算 3 * 2)
      int result = (5 + 3) * 2; // 结果是 16(先算 5 + 3)
    • 注意运算符的结合性(如 ++--),避免因顺序错误导致逻辑错误。

学习建议

  1. 记忆方法

    • 将运算符按优先级层次排列,形成一个“金字塔”,高优先级在上层,低优先级在下层。
    • 使用代码示例实际测试来验证优先级规则。
  2. 资源推荐

    • 推荐使用教科书中的运算符优先级表(如《C++ primer》或人教版信息学教材)。
    • 在线工具:C++ Operator Precedence Table(可访问官方文档加深理解)。
  3. 注意事项

    • 如果遇到复杂表达式,建议显式添加括号以确保逻辑正确,避免依赖优先级规则。
    • 注意运算符的副作用(如 ++--),避免在代码中引发不可预期的错误。