C++中的运算符优先级决定了在没有括号的情况下,表达式中各个运算符的计算顺序。运算符优先级较高的运算符会先计算。以下是C++中运算符优先级的概览,从高到低:

1. 括号运算符 ()

  • () 是最高优先级,用于控制运算顺序。

2. 后缀运算符

  • [] 数组下标
  • () 函数调用
  • ++ 自增(后置)
  • -- 自减(后置)
  • .成员访问
  • -> 指针成员访问

3. 前缀运算符

  • ++ 自增(前置)
  • -- 自减(前置)
  • + 正号
  • - 负号
  • ! 逻辑非
  • ~ 按位取反
  • * 解引用
  • & 取地址
  • sizeof 计算大小
  • typeid 获取类型信息

4. 算术运算符

  • * 乘法
  • / 除法
  • % 取余

5. 加法和减法运算符

  • + 加法
  • - 减法

6. 移位运算符

  • << 左移
  • >> 右移

7. 关系运算符

  • < 小于
  • <= 小于等于
  • > 大于
  • >= 大于等于

8. 相等与不相等运算符

  • == 等于
  • != 不等于

9. 按位运算符

  • & 按位与
  • ^ 按位异或
  • | 按位或

10. 逻辑运算符

  • && 逻辑与
  • || 逻辑或

11. 条件运算符

  • ?: 三元运算符

12. 赋值运算符

  • = 赋值
  • += 加法赋值
  • -= 减法赋值
  • *= 乘法赋值
  • /= 除法赋值
  • %= 取余赋值
  • <<= 左移赋值
  • >>= 右移赋值
  • &= 按位与赋值
  • ^= 按位异或赋值
  • |= 按位或赋值

13. 运算符

  • , 逗号运算符

14. 类型转换运算符

  • typeid 获取类型信息
  • dynamic_cast 动态类型转换
  • static_cast 静态类型转换
  • reinterpret_cast 强制类型转换
  • const_cast 去除常量

15. 闭合运算符

  • [] 数组访问
  • () 函数调用

优先级并不是唯一决定计算顺序的因素,左结合与右结合也非常重要。例如,赋值运算符 (=) 是右结合的,而大多数其他运算符(如加法、乘法)则是左结合的。

Logo

魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。

更多推荐