为方便记忆,将操作符优先级分成10个级别,优先级依次降低
1、数组下标引用、函数调用、聚众、结构成员访问操作符和后缀
操作符 | 描述 | 用法示例 | 结果类型 | 结合性 | 是否控制求值顺序 | 几目 |
---|
[ ] | 下标引用 | rexp[rexp] | lexp | L-R | 否 | |
() | 聚组 | (表达式) | 与表达式同 | N/A | 否 | |
() | 函数调用 | rexp(rexp,…,rexp) | rexp | L-R | 否 | |
. | 访问结构成员 | lexp.member_name | lexp | L-R | 否 | |
-> | 访问结构指针成员 | rexp->member_name | lexp | L-R | 否 | |
++ | 后缀自增 | lexp++ | rexp | L-R | 否 | 单 |
- - | 后缀自减 | lexp– | rexp | L-R | 否 | 单 |
2、负号、强制类型、前缀、解引用、取地址、逻辑反、按位反和sizeof
操作符 | 描述 | 用法示例 | 结果类型 | 结合性 | 是否控制求值顺序 | 几目 |
---|
- | 表示负值 | -rexp | rexp | R-L | 否 | 单 |
+ | 表示正值 | +rexp | rexp | R-L | 否 | 单 |
(类型) | 类型转换 | (类型) rexp | rexp | R-L | 否 | |
++ | 前缀自增 | ++lexp | rexp | R-L | 否 | 单 |
- - | 前缀自减 | –lexp | rexp | R-L | 否 | 单 |
& | 取地址 | &lexp | rexp | R-L | 否 | 单 |
* | 间接访问 | *rexp | lexp | R-L | 否 | 单 |
! | 逻辑反 | !rexp | rexp | R-L | 否 | 单 |
~ | 按位取反 | ~rexp | rexp | R-L | 否 | 单 |
sizeof | 取其长度,以字节表示 | sizeof(类型) | rexp | R-L | 否 | |
3、算数操作符
操作符 | 描述 | 用法示例 | 结果类型 | 结合性 | 是否控制求值顺序 | 几目 |
---|
/ | 除法 | rexp / rexp | rexp | L-R | 否 | 双 |
* | 乘法 | rexp * rexp | rexp | L-R | 否 | 双 |
% | 整数取余 | rexp % rexp | rexp | L-R | 否 | 双 |
+ | 加法 | rexp + rexp | rexp | L-R | 否 | 双 |
- | 减法 | rexp - rexp | rexp | L-R | 否 | 双 |
4、移位操作符
操作符 | 描述 | 用法示例 | 结果类型 | 结合性 | 是否控制求值顺序 | 几目 |
---|
<< | 左移位 | rexp << rexp | rexp | L-R | 否 | 双 |
>> | 右移位 | rexp >> rexp | rexp | L-R | 否 | 双 |
5、条件判断操作符
操作符 | 描述 | 用法示例 | 结果类型 | 结合性 | 是否控制求值顺序 | 几目 |
---|
> | 大于 | rexp > rexp | rexp | L-R | 否 | 双 |
>= | 大于等于 | rexp >= rexp | rexp | L-R | 否 | 双 |
< | 小于 | rexp < rexp | rexp | L-R | 否 | 双 |
<= | 小于等于 | rexp <= rexp | rexp | L-R | 否 | 双 |
== | 等于 | rexp == rexp | rexp | L-R | 否 | 双 |
!= | 不等于 | rexp != rexp | rexp | L-R | 否 | 双 |
6、位操作符
操作符 | 描述 | 用法示例 | 结果类型 | 结合性 | 是否控制求值顺序 | 几目 |
---|
& | 位与 | rexp & rexp | rexp | L-R | 否 | 双 |
^ | 位异或 | rexp ^ rexp | rexp | L-R | 否 | 双 |
| | 位或 | rexp | rexp | rexp | L-R | 否 | 双 |
7、逻辑操作符
操作符 | 描述 | 用法示例 | 结果类型 | 结合性 | 是否控制求值顺序 | 几目 |
---|
&& | 逻辑与 | rexp && rexp | rexp | L-R | 是 | 双 |
|| | 逻辑或 | rexp || rexp | rexp | L-R | 是 | 双 |
8、条件操作符
操作符 | 描述 | 用法示例 | 结果类型 | 结合性 | 是否控制求值顺序 | 几目 |
---|
? : | 条件操作符 | rexp ? rexp : rexp | rexp | N/A | 是 | 三 |
9、赋值操作符
操作符 | 描述 | 用法示例 | 结果类型 | 结合性 | 是否控制求值顺序 | 几目 |
---|
= | 赋值 | lexp = rexp | rexp | R-L | 否 | |
/= | 以…除 | lexp /= rexp | rexp | R-L | 否 | |
*= | 以…乘 | lexp *= rexp | rexp | R-L | 否 | |
%= | 以…取模 | lexp %= rexp | rexp | R-L | 否 | |
+= | 以…加 | lexp += rexp | rexp | R-L | 否 | |
-= | 以…减 | lexp -= rexp | rexp | R-L | 否 | |
<<= | 以…左移 | lexp <<= rexp | rexp | R-L | 否 | |
>>= | 以…右移 | lexp >>= rexp | rexp | R-L | 否 | |
&= | 以…与 | lexp &= rexp | rexp | R-L | 否 | |
^= | 以…异或 | lexp ^= rexp | rexp | R-L | 否 | |
|= | 以…或 | lexp |= rexp | rexp | R-L | 否 | |
10、逗号操作符
操作符 | 描述 | 用法示例 | 结果类型 | 结合性 | 是否控制求值顺序 | 几目 |
---|
, | 逗号 | rexp,rexp | rexp | L-R | 是 | |