运算符的优先级和结合性
注1:优先级相同的运算符,运算次序由结合性决定。
· 比如 3 * 4 / 5 % 6,其中乘号、除号和求余运算符在同一优先级,结合性是“左到右”,因此先计算 3 * 4,再计算 / 5,最后计算 % 6
· 再如 -i++,符号和自增运算符在同一优先级,结合性是“右到左”,因此 -i++ 相当于 -(i++)
注2:* 目运算符是指操作数的个数,比如单目运算符只有一个操作数,双目运算符有两个操作数,而三目运算符则有三个操作数。
注3:通过使用小括号可以提升表达式的优先级至最高。
· 比如 (1 + 2) * (3 - 4),其中加号、减号运算符的优先级本身是要低于乘号运算符的,但由于使用了小括号,且结合性均是“左到右”,所以先计算 (1 + 2),再计算 (3 - 4),最后才将前两者的结果相乘
|
优先级 |
运算符 |
含义 |
使用形式 |
结合性 |
说明 |
|
1 |
[ ] |
数组下标 |
数组名[整型表达式] |
左到右 → |
|
|
( ) |
圆括号 |
(表达式) |
|||
|
. |
成员选择(对象) |
对象.成员名 |
|||
|
-> |
成员选择(指针) |
对象指针->成员名 |
|||
|
++ |
自增运算符 |
变量名++ |
单目运算符 |
||
|
-- |
自减运算符 |
变量名-- |
单目运算符 |
||
|
2 |
- |
负号运算符 |
-表达式 |
右到左 ← |
单目运算符 |
|
(类型) |
强制类型转换 |
(数据类型)表达式 |
单目运算符 |
||
|
++ |
自增运算符 |
++变量名 |
单目运算符 |
||
|
-- |
自减运算符 |
--变量名 |
单目运算符 |
||
|
* |
取值运算符 |
*指针表达式 |
单目运算符 |
||
|
& |
取地址运算符 |
&左值表达式 |
单目运算符 |
||
|
! |
逻辑非运算符 |
!表达式 |
单目运算符 |
||
|
~ |
按位取反运算符 |
~表达式 |
单目运算符 |
||
|
sizeof |
长度运算符 |
sizeof 表达式 或 sizeof(类型) |
单目运算符 |
||
|
3 |
/ |
除 |
表达式 / 表达式 |
左到右 → |
双目运算符 |
|
* |
乘 |
表达式 * 表达式 |
双目运算符 |
||
|
% |
余数(取模) |
整型表达式 % 整型表达式 |
双目运算符 |
||
|
4 |
+ |
加 |
表达式 + 表达式 |
左到右 → |
双目运算符 |
|
- |
减 |
表达式 - 表达式 |
双目运算符 |
||
|
5 |
<< |
左移 |
表达式 << 表达式 |
左到右 → |
双目运算符 |
|
>> |
右移 |
表达式 >> 表达式 |
双目运算符 |
||
|
6 |
> |
大于 |
表达式 > 表达式 |
左到右 → |
双目运算符 |
|
>= |
大于等于 |
表达式 >= 表达式 |
双目运算符 |
||
|
< |
小于 |
表达式 < 表达式 |
双目运算符 |
||
|
<= |
小于等于 |
表达式 <= 表达式 |
双目运算符 |
||
|
7 |
== |
等于 |
表达式 == 表达式 |
左到右 → |
双目运算符 |
|
!= |
不等于 |
表达式 != 表达式 |
双目运算符 |
||
|
8 |
& |
按位与 |
整型表达式 & 整型表达式 |
左到右 → |
双目运算符 |
|
9 |
^ |
按位异或 |
整型表达式 ^ 整型表达式 |
左到右 → |
双目运算符 |
|
10 |
| |
按位或 |
整型表达式 | 整型表达式 |
左到右 → |
双目运算符 |
|
11 |
&& |
逻辑与 |
表达式 && 表达式 |
左到右 → |
双目运算符 |
|
12 |
|| |
逻辑或 |
表达式 || 表达式 |
左到右 → |
双目运算符 |
|
13 |
?: |
条件运算符 |
表达式1? 表达式2: 表达式3 |
右到左 ← |
三目运算符 |
|
14 |
= |
赋值运算符 |
变量 = 表达式 |
右到左 |
双目运算符 |
|
/= |
除后赋值 |
变量 /= 表达式 |
双目运算符 |
||
|
*= |
乘后赋值 |
变量 *= 表达式 |
双目运算符 |
||
|
%= |
取模后赋值 |
变量 %= 表达式 |
双目运算符 |
||
|
+= |
加后赋值 |
变量 += 表达式 |
双目运算符 |
||
|
-= |
减后赋值 |
变量 -= 表达式 |
双目运算符 |
||
|
<<= |
左移后赋值 |
变量 <<= 表达式 |
双目运算符 |
||
|
>>= |
右移后赋值 |
变量 >>= 表达式 |
双目运算符 |
||
|
&= |
按位与后赋值 |
变量 &= 表达式 |
双目运算符 |
||
|
^= |
按位异或后赋值 |
变量 ^= 表达式 |
双目运算符 |
||
|
|= |
按位或后赋值 |
变量 |= 表达式 |
双目运算符 |
||
|
15 |
, |
逗号运算符 |
表达式1,表达式2,表达式3,… |
左到右 → |




