C语言运算符及优先级
优先级 运算符 含义 运算符类型 结合方向
1 () 圆括号 单目 自左向右
[] 下标运算符
—> 指向结构体成员运算符
. 结构体成员运算符
2 ! 逻辑非运算符 自右向左
~ 按位取反运算符
++ 自增运算符
-- 自减运算符
- 负号运算符
(类型) 类型转换运算符
* 指针运算符
& 地址运算符
Sizeof 长度运算符
3 * 乘法运算符 双目 自左向右
/ 除法运算符
% 求余运算符
4 + 加法运算符
- 减法运算符
5 << 左移运算符
>> 右移运算符
!= 不等于运算符
8 & 按位与运算符
9 ^ 按位异或运算符
10 | 按位或运算符
11 && 逻辑与运算符
12 || 逻辑或运算符
13 ?: 条件运算符 三目 自右向左
14 =、+=、-=、*=、
/=、%=、>>=、
<<=、&=、^=、|= 赋值运算符 双目
优先级 运算符 含义 运算符类型 结合方向
1 () 圆括号 单目 自左向右
[] 下标运算符
—> 指向结构体成员运算符
. 结构体成员运算符
2 ! 逻辑非运算符 自右向左
~ 按位取反运算符
++ 自增运算符
-- 自减运算符
- 负号运算符
(类型) 类型转换运算符
* 指针运算符
& 地址运算符
Sizeof 长度运算符
3 * 乘法运算符 双目 自左向右
/ 除法运算符
% 求余运算符
4 + 加法运算符
- 减法运算符
5 << 左移运算符
>> 右移运算符
6 <、<=、>、>= 关系运算符
7 == 等于运算符!= 不等于运算符
8 & 按位与运算符
9 ^ 按位异或运算符
10 | 按位或运算符
11 && 逻辑与运算符
12 || 逻辑或运算符
13 ?: 条件运算符 三目 自右向左
14 =、+=、-=、*=、
/=、%=、>>=、
<<=、&=、^=、|= 赋值运算符 双目
15 , 逗号运算符 双目
1点括号中圆箭 (.结构体操作符,括号包括中括号与圆括号,箭头即为指针操作符)
自叹星地负长转 (自为自增自减运算符,星为*运算符,地为地址运算符,
负为负号操作符,长为长度运算符sizeof,转为类型转换运算符)
3余乘除四加减 (%,*,/ ,+ ,-)
5移6关7为等 (移为移位<<,>>,关为关系运算符>,<,>=,<=,7为等号运算符==,!=)
8与9异10位或 (位与,位异或,位或)
11逻与12或 (逻辑与,逻辑或)
3条4赋5为逗 (这里都为13,14,15 为了便于好记,我把10都去掉了,条件运算符,赋值运算符,逗号运算符)
或者13条4赋5逗
13与2反结合 (就是拥有13优先级和2优先级的运算符结合方向是从右往左结合的)