首页 > 代码库 > 运算符的优先级
运算符的优先级
运算符的优先级和结合性
优 先 级 |
运 算 符 |
含 义 |
运算对象个数 |
结合方向 |
1 |
() |
圆括号 |
|
自左向右 |
[] |
下标运算符 |
|||
?> |
指向结构体成员运算符 |
|||
. |
结构体成员运算符 |
|||
2 |
! |
逻辑非运算 |
1(单目) |
自右向左 |
~ |
按位取反运算 |
|||
++ |
自增运算符 |
|||
? ? |
自减运算符 |
|||
? |
负号运算符 |
|||
(类型) |
类型转换运算符 |
|||
* |
指针运算符 |
|||
& |
地址运算符 |
|||
sizeof |
长度运算符 |
续表
优 先 级 |
运 算 符 |
含 义 |
运算对象个数 |
结合方向 |
3 |
* |
乘法运算符 |
2(双目) |
自左向右 |
/ |
除法运算符 |
|||
% |
求余运算符 |
|||
4 |
+ |
加法运算符 减法运算符 |
2(双目) |
自左向右 |
? |
||||
5 |
<< |
左移运算符 |
2(双目) |
自左向右 |
>> |
右移运算符 |
|||
6 |
< |
关系运算符 |
2(双目) |
自左向右 |
<= |
||||
> |
||||
>= |
||||
7 |
= = |
等于运算符 不等于运算符 |
2(双目) |
自左向右 |
!= |
||||
8 |
& |
按位与运算符 |
2(双目) |
自左向右 |
9 |
^ |
按位异或运算符 |
2(双目) |
自左向右 |
10 |
| |
按位或运算符 |
2(双目) |
自左向右 |
11 |
&& |
逻辑与运算符 |
2(双目) |
自左向右 |
12 |
|| |
逻辑或运算符 |
2(双目) |
自左向右 |
13 |
?: |
条件运算符 |
3(三目) |
自右向左 |
14 |
= += ?= *= /= %= >>= <<= &= ^= |= |
赋值运算符 |
2(双目) |
自右向左 |
15 |
, |
逗号运算符 |
|
自左向右 |
这些运算符的优先级看起来比较凌乱,表4-10所示为一个简单易记的口诀,可以帮助记忆。
表4-10 运算符的优先级口诀
口 诀 |
含 义 |
括号成员第一 |
括号运算符[]、()成员运算符.、?> |
全体单目第二 |
所有的单目运算符,比如++、??、+(正)、?(负)等 |
乘除余三,加减四 |
这个“余”是指取余运算即% |
移位五,关系六 |
移位运算符:<<、>>,关系:>、<、>=、<=等 |
等于(与)不等排第七 |
即= =、!= |
位与异或和位或“三分天下”八九十 |
这几个都是位运算:位与(&)异或(^)位或(|) |
逻辑或跟与 十二和十一 |
逻辑运算符:||和&& 注意顺序:优先级(||)低于优先级(&&) |
续表
口 诀 |
含 义 |
条件高于赋值 |
三目运算符优先级排到14位只比赋值运算符和“,”高,需要注意的是赋值运算符很多 |
逗号运算级最低 |
逗号运算符优先级最低 |
运算符的优先级