操作符的所有属性都列在下方的优先级表中。表中各个列分别代表操作符,它的功能简述,用法示例,它的结果类型,它的结合性以及它出现时是否会对表达式的求值顺序施加控制。用法示例提示它是否需要操作数为左值。
术语lexp表示左值表达式,rexp表示右值表达式。
(注意:左值意味着一个位置,而右值意味着一个值)
在使用右值的地方可以使用左值,但是在需要左值的地方不能使用右值。
操作符 | 描 述 | 用法示例 | 结果类型 | 结合性 | 是否控制求值顺序 |
( ) | 聚组 | (表达式) | rexp | N/A | 否 |
( ) | 函数调用 | rexp(rexp,…,reap) | rexp | L-R | 否 |
[ ] | 下标引用 | rexp[rexp] | rexp | L-R | 否 |
. | 访问结构成员 | lexp.member_name | rexp | L-R | 否 |
-> | 访问结构指针成员 | rexp->member_name | rexp | L-R | 否 |
++ | 后缀自增 | lexp++ | rexp | L-R | 否 |
-- | 后缀自减 | lexp-- | rexp | L-R | 否 |
! | 逻辑反 | !rexp | rexp | R-L | 否 |
~ | 按位取反 | ~rexp | rexp | R-L | 否 |
+ | 单目,表示正值 | +rexp | rexp | R-L | 否 |
- | 单目,表示负值 | -rexp | rexp | R-L | 否 |
++ | 前缀自增 | ++lexp | rexp | R-L | 否 |
-- | 前缀自减 | --lexp | rexp | R-L | 否 |
* | 间接访问 | *rexp | rexp | R-L | 否 |
& | 取地址 | &lexp | rexp | R-L | 否 |
sizeof | 取其长度,以字节表示 | sizeof rexp sizeof(类型) | rexp | R-L | 否 |
(类型) | 类型转换 | (类型)rexp | rexp | R-L | 否 |
* | 乘法 | 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 | 否 |
>> | 右移位 | 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 | 否 |
!= | 不等于 | 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 | 是 |
?: | 条件操作符 | rexp ? rexp : rexp | rexp | N/A | 是 |
= | 赋值 | 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 | 否 |
, | 逗号 | rexp, rexp | rexp | L-R | 是 |