C++运算符的优先级与结合性完整规则查询
C++中运算符的优先级和结合性是什么?
有文章解释了这些特性如何从语法中衍生而来,但我仅需要所有规则的完整列表。
本问题旨在作为社区FAQ,可替代cppreference相关文章供参考。
运算符优先级与结合性列表(从最高到最低)
第1级(最高)
- 运算符:
::(作用域解析) - 结合性:左到右
- 运算符:
第2级
- 运算符:
()(函数调用)、[](数组下标)、.(成员访问)、->(指针成员访问)、++(后缀递增)、--(后缀递减)、typeid、const_cast、dynamic_cast、reinterpret_cast、static_cast、sizeof...、alignof - 结合性:左到右
- 运算符:
第3级
- 运算符:
++(前缀递增)、--(前缀递减)、+(正号)、-(负号)、!(逻辑非)、~(按位取反)、sizeof、new、new[]、delete、delete[] - 结合性:右到左
- 运算符:
第4级
- 运算符:
.*(成员指针访问)、->*(指针成员指针访问) - 结合性:左到右
- 运算符:
第5级
- 运算符:
*(乘法)、/(除法)、%(取余) - 结合性:左到右
- 运算符:
第6级
- 运算符:
+(加法)、-(减法) - 结合性:左到右
- 运算符:
第7级
- 运算符:
<<(左移)、>>(右移) - 结合性:左到右
- 运算符:
第8级
- 运算符:
<(小于)、<=(小于等于)、>(大于)、>=(大于等于) - 结合性:左到右
- 运算符:
第9级
- 运算符:
==(等于)、!=(不等于) - 结合性:左到右
- 运算符:
第10级
- 运算符:
&(按位与) - 结合性:左到右
- 运算符:
第11级
- 运算符:
^(按位异或) - 结合性:左到右
- 运算符:
第12级
- 运算符:
|(按位或) - 结合性:左到右
- 运算符:
第13级
- 运算符:
&&(逻辑与) - 结合性:左到右
- 运算符:
第14级
- 运算符:
||(逻辑或) - 结合性:左到右
- 运算符:
第15级
- 运算符:
?:(三目条件运算符) - 结合性:右到左
- 运算符:
第16级
- 运算符:
=(赋值)、+=、-=、*=、/=、%=、<<=、>>=、&=、^=、|= - 结合性:右到左
- 运算符:
第17级(最低)
- 运算符:
,(逗号运算符) - 结合性:左到右
- 运算符:
内容的提问来源于stack exchange,提问作者Jan Schultke
相关产品推荐
相关产品推荐

