《C和指针》一书介绍操作符优先级
5.4.3 操作符的属性
转:http://blog.csdn.net/shoutday/article/details/8275387
每个操作符的所有属性都列在表5.1所示的优先级表中。表中各个列分别代表操作符、它的功能描述、用法示例、它的结果类型、它的结合性以及当它出现时是否会对表达式的求值顺序施加控制。用法示例提示它是否需要操作数为左值。术语lexp表示左值表达式,rexp表示右值表达式。记住,左值意味着一个位置,而右值意味着一个值。所以,在使用右值的地方也可以使用左值,但是在需要左值的地方不能使用右值。
说明:结合性L-R自左向右,R-L自右向左。
表5.1 操作符的优先级
操作符 |
描述 |
用法示例 |
结果类型 |
结合性 |
是否控制求值顺序 |
() |
聚组 |
(表达式) |
与表达式同 |
N/A |
否 |
() |
函数调用 |
rexp(rexp,…,rexp) |
rexp |
L-R |
否 |
[] |
下标引用 |
Rexp[rexp] |
lexp |
L-R |
否 |
. |
访问结构成员 |
Lexp.member_name |
lexp |
L-R |
否 |
-> |
访问结构指针成员 |
Rexp->member_name |
lexp |
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 |
lexp |
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 |
是 |