此优先级表来自www.slyar.com


C语言运算符优先级表
优先级
运算符
名称或含义
使用形式
结合方向
说明
1
[]
数组下标
数组名[常量表达式]
从左到右

()
圆括号(表达式)/函数名(形参表)

.
成员选择(对象)
对象.成员名
->
成员选择(指针)
对象指针->成员名
2
-符号运算符
-表达式从右到左单目运算符
(类型)
强制类型转换
(数据类型)表达式
++
自增运算符
++变量名/变量名++单目运算符
--
自减运算符
--变量名/变量名--单目运算符
*
取值运算符
*指针变量 单目运算符
&
取地址运算符
&变量名单目运算符

逻辑非运算符
!表达式单目运算符
~
按位取反运算符
~表达式单目运算符
sizeof
长度运算符
sizeof(表达式)
3
/

表达式/表达式从左到右双目运算符
*

表达式*表达式双目运算符
%
取模整型表达式/整型表达式双目运算符
4
+

表达式+表达式从左到右双目运算符
-

表达式-表达式双目运算符
5
<<
左移
变量<<表达式从左到右
双目运算符
>>
右移
变量>>表达式双目运算符
6
>
大于
表达式>表达式从左到右
双目运算符
>=
大于等于
表达式>=表达式双目运算符
<
小于
表达式<表达式双目运算符
<=
小于等于
表达式<=表达式双目运算符
7
==
等于
表达式==表达式从左到右
双目运算符
!=
不等于
表达式!=表达式双目运算符
8
&
按位与
表达式&表达式从左到右双目运算符
9
^
按位异或
表达式^表达式从左到右双目运算符
10
|
按位或
表达式|表达式从左到右双目运算符
11
&&
逻辑与
表达式&&表达式从左到右双目运算符
12
||
逻辑或
表达式||表达式从左到右双目运算符
13
?=
条件运算符
表达式1? 表达式2: 表达式3从右到左三目运算符
14
=
赋值运算符
变量=表达式从右到左
/=
除后赋值
变量/=表达式
*=
乘后赋值
变量+=表达式
%=
取模后赋值
变量%=表达式
+=
加后赋值
变量+=表达式
-=
减后赋值
变量-=表达式
<<=
左移后赋值
变量<<=表达式
>>=
右移后赋值
变量>>=表达式
&=
按位与后赋值
变量&=表达式
^=按位异或后赋值
变量^=表达式
|=按位或后赋值
变量|=表达式
15
,
逗号运算符
表达式,表达式,…从左到右从左向右顺序运算


以下内容摘自《C陷阱与缺陷》

单目运算符的优先级高于双目运算符

在双目运算符中:

1.算术运算符优先级最高

2.移位运算符次之

3.关系运算符再次之

4.逻辑运算符更次之

重要的两点:

1.逻辑运算符的优先级关系运算符

2.移位运算符优先级低于算数运算符,高于关系运算符