运算优先级
以下是按优先级排序的所有运算的完整表格。
优先级 |
符号 |
说明 |
示例 |
结合性 |
---|---|---|---|---|
0 |
:: |
作用域解析 |
n1 :: n2 |
左 |
1 |
() |
分组 |
(e1) |
左 |
1 |
[] |
索引 |
[e1] |
左 |
1 |
. |
取消引用 |
n1.n2 |
左 |
1 |
++ |
后缀递增 |
e1++ |
左 |
1 |
- |
后缀递减 |
e1-- |
左 |
2 |
! |
逻辑“非” |
!e1 |
右 |
2 |
~ |
按位补码(反转) |
~e1 |
右 |
2 |
+ |
一元加法 |
+e1 |
右 |
2 |
- |
一元减法 |
-e1 |
右 |
2 |
++ |
前缀递增 |
++e1 |
右 |
2 |
- |
前缀递减 |
--e1 |
右 |
2 |
(type) |
类型强制转换 |
(n1) |
右 |
2 |
& |
取地址 |
&n1 |
右 |
3 |
* |
乘法 |
e1 * e2 |
左 |
3 |
/ |
除法 |
e1 / e2 |
左 |
3 |
% |
模除法 |
e1 % e2 |
左 |
4 |
+ |
加法 |
e1 + e2 |
左 |
4 |
- |
减法 |
e1 - e2 |
左 |
5 |
<< |
左移 |
e1 << e2 |
左 |
5 |
>> |
右移 |
e1 >> e2 |
左 |
6 |
< |
小于 |
e1 < e2 |
左 |
6 |
> |
大于 |
e1 > e2 |
左 |
6 |
<= |
小于等于 |
e1 <= e2 |
左 |
6 |
>= |
大于等于 |
e1 >= e2 |
左 |
7 |
== |
等于 |
e1 == e2 |
左 |
7 |
!= |
不等于 |
e1 != e2 |
左 |
8 |
& |
按位“与” |
e1 & e2 |
左 |
9 |
^ |
按位“异或” |
e1 ^ e2 |
左 |
10 |
| |
按位“或” |
e1 | e2 |
左 |
11 |
&& |
逻辑“与” |
e1 && e2 |
左 |
12 |
|| |
逻辑“或” |
e1 || e2 |
左 |
13 |
?: |
三元条件 |
c1 ? e1 : e2 |
右 |
14 |
= |
赋值 |
e1 = e2 |
右 |
14 |
+= |
赋值加法 |
e1 += e2 |
右 |
14 |
-= |
赋值减法 |
e1 -= e2 |
右 |
14 |
*= |
赋值乘法 |
e1 *= e2 |
右 |
14 |
/= |
赋值除法 |
e1 /= e2 |
右 |
14 |
%= |
赋值模除法 |
e1 %= e2 |
右 |
14 |
<<= |
赋值左移 |
e1 <<= e2 |
右 |
14 |
>>= |
赋值右移 |
e1 >>= e2 |
右 |
14 |
&= |
赋值按位“与” |
e1 &= e2 |
右 |
14 |
|= |
赋值按位“或” |
e1 |= e2 |
右 |
14 |
^= |
赋值按位“与/或” |
e1 ^= e2 |
右 |
15 |
, |
逗号 |
e1 , e2 |
左 |
如上所述,方括号用于指定数组元素的索引,因此具有最高的优先级。
除了之前讨论过的运算符,本节还包含一些我们未遇到过的运算符。
我们将学习面向对象的编程 (OOP) 中涉及的 作用域解析 运算符 '::'。同时我们还需学习取消引用操作符 '.'。类型(类)的标识符及其特性(并非表达式)充当它们的操作数。
在 OOP 中,取地址运算符 & 旨在 通过引用进行函数参数传递 并获取 对象地址 。在这两种情况下,运算符都作用于变量(左值)。
显式类型强制转换运算将在 下一章中介绍 中介绍。