1.优先级
运算符优先级指定了包含多个运算符的表达式中的运算顺序。 运算符关联性指定了在包含多个具有相同优先级的运算符的表达式中,操作数是与其左侧还是右侧的操作数组合。
操作符的优先级:(优先级依次从上至下依次递减)
是否控制求值顺序:是,否
结合性:L-R 或 R-L
() 聚组 (表达式) 与表达式同 N/A 否
() 函数调用 L-R 否
[ ] 下标引用 L-R 否
. 访问结构成员 L-R 否
-> 访问结构指针成员 L-R 否
++ 后缀自增 L-R 否
-- 后缀自减 L-R 否
! 逻辑反 R-L 否
~ 按位取反 R-L 否
+ 单目,表示正值 R-L 否
- 单目,表示负值 R-L 否
++ 前缀自增 R-L 否
-- 前缀自减 R-L 否
* 间接访问 R-L 否
& 取地址 R-L 否
sizeof 取其长度,以字节表示 R-L 否
(类型) 类型转换 (类型) R-L 否
* 乘法 L-R 否
/ 除法 L-R 否
% 整数取余 L-R 否
+ 加法 L-R 否
- 减法 L-R 否
<< 左移位 L-R 否
>> 右移位 L-R 否
> 大于 L-R 否
>= 大于等于 L-R 否
< 小于 L-R 否
<= 小于等于 L-R 否
== 等于 L-R 否
!= 不等于 L-R 否
& 位与 L-R 否
^ 位异或 L-R 否
| 位或 L-R 否
&& 逻辑与 L-R 是
|| 逻辑或 L-R 是
? : 条件操作符 N/A 是
= 赋值 p R-L 否
+= 以...加 R-L 否
-= 以...减 R-L 否
*= 以...乘 R-L 否
/= 以...除 R-L 否
%= 以...取模 R-L 否
<<= 以...左移 R-L 否
>>= 以...右移 R-L 否
&= 以...与 R-L 否
^= 以...异或 R-L 否
|= 以...或 R-L 否
, 逗号 L-R 是
2.结合性
如果两个运算符优先级相同,优先级没办法确定先计算哪个了,这时候就看结合性了,则根据运算符 是左结合,还是右结合,决定执⾏顺序。⼤部分运算符是左结合(从左到右执⾏),少数运算符是右 结合(从右到左执⾏),⽐如赋值运算符( = )。