background image

<=

小于等于

表达式<=表达式

双目运算符

7

==

等于

表达式==表达式

左到右

双目运算符

!=

不等于

表达式!= 表达式

双目运算符

8

&

按位与

表达式&表达式

左到右

双目运算符

9

^

按位异或

表达式^表达式

左到右

双目运算符

10

|

按位或

表达式|表达式

左到右

双目运算符

11

&&

逻辑与

表达式&&表达式

左到右

双目运算符

12

||

逻辑或

表达式||表达式

左到右

双目运算符

13

?:

条件运算符

表达式 1? 表达式 2: 

表达式 3

右到左

三目运算符

14

=

赋值运算符

变量=表达式

右到左

/=

除后赋值

变量/=表达式

*=

乘后赋值

变量*=表达式

%=

取模后赋值

变量%=表达式

+=

加后赋值

变量+=表达式

-=

减后赋值

变量-=表达式

<<=

左移后赋值

变量<<=表达式

>>=

右移后赋值

变量>>=表达式

&=

按位与后赋值

变量&=表达式

^=

按位异或后赋值

变量^=表达式

|=

按位或后赋值

变量|=表达式

15

,

逗号运算符

表达式,表达式,…

左到右

从左向右顺序

运算

所有的优先级中,只有

三个优先级是从右至左结合的,它们是单目运算符、条件运算符、赋值运算符

其它的都是从左至右结合。  

  具有最高优先级的其实并不算是真正的运算符,它们算是一类特殊的操作。()是与函

数相关,[]与数组相关,而->及.是取结构成员。  

  其次是单目运算符,所有的单目运算符具有相同的优先级,因此在我认为的 真正的

运算符中它们具有最高的优先级,又由于它们都是从右至左结合的,因此*p++与*(p+
+)等效是毫无疑问的。  

  接下来是算术运算符,*、/、%的优先级当然比+、-高了。  

  移位运算符紧随其后。  

  其次的关系运算符中,< <= > >=要比 == !=高一个级别,不大好理解。  

  所有的逻辑操作符都具有不同的优先级(单目运算符出外,!和~)