c++的运算符优先级
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. 闭合运算符
[]
数组访问()
函数调用
优先级并不是唯一决定计算顺序的因素,左结合与右结合也非常重要。例如,赋值运算符 (=
) 是右结合的,而大多数其他运算符(如加法、乘法)则是左结合的。