运算符
结合性
() [] -> .
自左向右
! ~ ++ -- - (type) * & sizeof
自右向左
* / %
自左向右
+ -
自左向右
<< >>
自左向右
< <= > >=
自左向右
== !=
自左向右
&
自左向右
^
自左向右
|
自左向右
&&
自左向右
||
自左向右
? :
自右向左
assignments
自右向左
,
自左向右
1.优先级最高者其实并不是真正意义上的运算符,包括:数组下标,函数调用操作符,各结构成员选择符。他们是自左向右结合。
2.单目运算符的优先级仅次于上述运算符,但函数调用的优先级高于单目运算符,所有
要调用函数指针p所指向的函数,必须写成(*p)();,若写成*p(),则等同于*(p())。
3.类型转换也是单目运算符
4.单目运算符自右向左结合,所以*p++等于*(p++)
5.双目预算符中,算术运算符 > 移位运算符 > 关系运算符
> 逻辑运算符 > 赋值运算符 > 条件运算符(三目运算符)
6.逻辑低于关系 a & b < c 实际为 a & (b < c)
7.移位低于运算 3 + 4 << 2 实际为 (3 + 4) << 2