C++运算符优先级
C++ 运算符优先级表(从高到低)
以下是 C++ 运算符的优先级列表,优先级高的运算符先计算。同一行的运算符具有相同的优先级,结合性决定了它们的计算顺序。
最高优先级
- 作用域解析
::
- 从左到右
成员访问、下标、函数调用
- 成员访问
.
和->
- 从左到右
- 数组下标
[]
- 从左到右
- 函数调用
()
- 从左到右
- 后置递增/递减
++``--
- 从左到右
- 类型转换
type()``type{}
- 从左到右
- const_cast, dynamic_cast, reinterpret_cast,
static_cast
- 从左到右
一元运算符
- 前置递增/递减
++``--
- 从右到左
- 一元加/减
+``-
- 从右到左
- 逻辑非
!
- 从右到左
- 按位取反
~
- 从右到左
- 取地址
&
- 从右到左
- 解引用
*
- 从右到左
- sizeof
- 从右到左
- new, new[]
- 从右到左
- delete, delete[]
- 从右到左
- C风格类型转换
(type)
- 从右到左
成员指针运算符
- 成员指针
.*``->*
- 从左到右
乘法、除法、取模
- 乘法
*
- 从左到右
- 除法
/
- 从左到右
- 取模
%
- 从左到右
加法、减法
- 加法
+
- 从左到右
- 减法
-
- 从左到右
移位运算符
- 左移
<<
- 从左到右
- 右移
>>
- 从左到右
关系运算符
- 小于
<
- 从左到右
- 小于等于
<=
- 从左到右
- 大于
>
- 从左到右
- 大于等于
>=
- 从左到右
相等性运算符
- 等于
==
- 从左到右
- 不等于
!=
- 从左到右
位运算符
- 按位与
&
- 从左到右
- 按位异或
^
- 从左到右
- 按位或
|
- 从左到右
逻辑运算符
- 逻辑与
&&
- 从左到右
- 逻辑或
||
- 从左到右
条件运算符
- 条件运算符
?:
- 从右到左
赋值运算符
- 赋值
=
- 从右到左
- 复合赋值
+=``-=``*=``/=``%=``<<=``>>=``&=``^=``|=
- 从右到左
逗号运算符
- 逗号
,
- 从左到右
注意事项
- 当不确定优先级时,使用括号
()
明确运算顺序 - 某些运算符在不同上下文中有不同含义(如
*
可以是乘法或解引用) - 运算符重载不会改变运算符的优先级
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来源 qyhome!