C语言运算符优先级表
优先级
|
运算符
|
名称或含义
|
使用形式
|
结合方向
|
说明
|
1
| 后置++ |
后置自增运算符
|
变量名++
|
左到右
| |
后置-- | 后置自减运算符 | 变量名-- | |||
[ ]
| 数组下标 |
数组名[整型表达式]
| |||
( )
|
圆括号
|
(表达式)/函数名(形参表)
| |||
.
|
成员选择(对象)
|
对象.成员名
| |||
->
|
成员选择(指针)
|
对象指针->成员名
| |||
2
|
-
|
负号运算符
|
-表达式
|
右到左
|
单目运算符
|
(类型)
|
强制类型转换
|
(数据类型)表达式
| |||
前置++
|
前置自增运算符
|
++变量名
|
单目运算符
| ||
前置--
|
前置自减运算符
|
--变量名
|
单目运算符
| ||
*
|
取值运算符
|
*指针表达式
|
单目运算符
| ||
&
|
取地址运算符
|
&左值表达式
|
单目运算符
| ||
!
|
逻辑非运算符
|
!表达式
|
单目运算符
| ||
~
|
按位取反运算符
|
~表达式
|
单目运算符
| ||
sizeof
|
长度运算符
|
sizeof 表达式/sizeof(类型)
| |||
3
|
/
|
除
|
表达式/表达式
|
左到右
|
双目运算符
|
*
|
乘
|
表达式*表达式
|
双目运算符
| ||
%
|
余数(取模)
|
整型表达式%整型表达式
|
双目运算符
| ||
4
|
+
|
加
|
表达式+表达式
|
左到右
|
双目运算符
|
-
|
减
|
表达式-表达式
|
双目运算符
| ||
5
|
<<
|
左移
|
表达式<<表达式
|
左到右
|
双目运算符
|
>>
|
右移
|
表达式>>表达式
|
双目运算符
| ||
6
|
>
|
大于
|
表达式>表达式
|
左到右
|
双目运算符
|
>=
|
大于等于
|
表达式>=表达式
|
双目运算符
| ||
<
|
小于
|
表达式<表达式
|
双目运算符
| ||
<=
|
小于等于
|
表达式<=表达式
|
双目运算符
| ||
7
|
==
|
等于
|
表达式==表达式
|
左到右
|
双目运算符
|
!=
|
不等于
|
表达式!= 表达式
|
双目运算符
| ||
8
|
&
|
按位与
|
整型表达式&整型表达式
|
左到右
|
双目运算符
|
9
|
^
|
按位异或
|
整型表达式^整型表达式
|
左到右
|
双目运算符
|
10
|
|
|
按位或
|
整型表达式|整型表达式
|
左到右
|
双目运算符
|
11
|
&&
|
逻辑与
|
表达式&&表达式
|
左到右
|
双目运算符
|
12
|
||
|
逻辑或
|
表达式||表达式
|
左到右
|
双目运算符
|
13
|
?:
|
条件运算符
|
表达式1? 表达式2: 表达式3
|
右到左
|
三目运算符
|
14
|
=
|
赋值运算符
|
变量=表达式
|
右到左
| |
/=
|
除后赋值
|
变量/=表达式
| |||
*=
|
乘后赋值
|
变量*=表达式
| |||
%=
|
取模后赋值
|
变量%=表达式
| |||
+=
|
加后赋值
|
变量+=表达式
| |||
-=
|
减后赋值
|
变量-=表达式
| |||
<<=
|
左移后赋值
|
变量<<=表达式
| |||
>>=
|
右移后赋值
|
变量>>=表达式
| |||
&=
|
按位与后赋值
|
变量&=表达式
| |||
^=
|
按位异或后赋值
|
变量^=表达式
| |||
|=
|
按位或后赋值
|
变量|=表达式
| |||
15
|
,
|
逗号运算符
|
表达式,表达式,…
|
左到右
|
从左向右顺序运算
|
圆下箭头一顿号
非凡增减富强针地长三乘除,四加减,五移位
千万别把鱼忘记,它在盛饭的厨子里
小灯大灯灯灯不等
爸喂鱼,舅疑惑,裸鸡也疑惑
十三姨,十四父,十五逗,兜到低
“圆下箭头一顿号”指的是第15级的运算符。其中圆指的是运算符(),下指的是下标运算符[],箭头指的是指向结构体成员运算符->,顿号指的是结构体成员运算符、
“非凡增减富强针地长”指的是第14级的运算符。其中非指的是逻辑运算符!,凡指的是按位取反运算符~,增减指的是自增和自减运算符++和--,富指的是负号运算符-,强指的是类型转换运算符(类型),针指的是指针运算符*,地指的是地址运算符&,长指的是长度运算符Sizeof
“三乘除,四加减,五移位” 指的是第13级到第11级的运算符。其中三四五并无实际意义,只是起区分级别而已。也可以想象三指的是第13级运算符。乘除指的是乘法运算符*和除法运算符/,加减指的是加法运算符+和减法运算符-,移位指的是左移运算符<<和右移运算符>>
“千万别把鱼忘记,它在盛饭的厨子里”指的是求余运算符%,它位于盛饭的厨子里,即指和乘法运算符、除法运算符在一起。
“小灯大灯灯灯不等” 指的是第10级到第9级的运算符。其中小灯大灯指的是关系运算符<、<=、>和>=,灯灯指的是等于运算符==,不等指的是不等于运算符!=
“爸喂鱼,舅疑惑,裸鸡也疑惑”指的是第8级到第4级的运算符。其中,爸喂鱼之指的是第8级的按位与运算符&,舅疑惑指的是第7级的按位异或运算符^和第6级的按位或运算符||,裸鸡也疑惑指的是第5级、第4级的逻辑与运算符&&和逻辑或运算符||
“十三姨,十四父,十五逗,兜到低”指的是第3级到第1级的运算符。其中,十三姨指的是条件运算符?: (三有双重含义,即指?:的优先级别是三,它的运算符类型也是三目,?难道不是姨即疑惑吗?),十四父的十四没有实际意义,父指的是赋值运算符=、+=、-=、*=、/=、%=、>>=、<<=、&=、^=和|= ,十五逗指的是第1级的运算符,兜到低指的是15级运算符以,结束。
参考连接:点击打开链接