按优先级进行整理:
第一优先级:(初等运算符)
( )
[ ] 下标引用 例如一个数组arr[10],表达的是数组arr中第10个元素。
-> 指向结构体成员
. 访问结构体成员
第二优先级:(单目运算符)
! 逻辑非
~ 按位取反
++ 自增
— 自减
– 负值
(类型)强制类型转换
* 指针
& 取地址
sizeof求变量或类型(储存的变量)大小,字节为单位。
第三优先级:(3~7级为关系运算符)
* 乘
/ 除
% 取余
第四优先级:
+ 加
– 减
第五优先级:
<< 左移(左边抛弃,右边补0)
>> 右移(分为两种情况:1逻辑移位:左边补0,右边抛弃;2算术移位:左边用符号位补,右边抛弃)
第六优先级:
> 大于
>=大于等于
< 小于
<=小于等于
第七优先级:
== 等于
!= 不等于
第八优先级:(8~12级为逻辑运算符)
& 按位与
第九优先级:
^ 按位异或
第十优先级:
| 按位或
第十一优先级:
&&逻辑与
第十二优先级:
||逻辑或
第十三优先级:(条件运算符)
? :条件运算符
第十四优先级:(赋值运算符)
= 赋值
+= 先加再赋值
-= 先减再赋值
*= 先乘再赋值
/= 先除再赋值
%= 先取余再赋值
>>=先右移再赋值
<<=先左移再赋值
&= 先与再赋值
^= 先异或再赋值
|= 先或再赋值
第十五优先级:(逗号运算符)
, 逗号运算符
说明:
1:在同一个优先级下的运算,按从左至右的顺序运算。
2:单目运算符的意思是:参与运算的对象个数。(依此理解双目运算符、三目运算符)。
3:各类运算符的优先级如下:初等运算符>单目运算符>算术运算符>关系运算符>逻辑运算符>条件运算符>赋值运算符>逗号运算符。