C语言中的运算符及其优先级


优先级

运算符

名称或含义

使用形式

结合方向

说明

1

[]

数组下标

[常量表达式]

左到右


()

圆括号

/函数名(形参表)


.

成员选择(对象)

对象.成员名


->

成员选择(指针)

->成员名


2

-

负号运算符

-表达式

右到左

单目运算符

(类型)

强制类型转换

(数据类型)表达式


++

自增运算符

++变量名/变量名++

单目运算符

--

自减运算符

--变量名/变量名--

单目运算符

*

取值运算符

*指针变量

单目运算符

&

取地址运算符

&变量名

单目运算符

!

逻辑非运算符

!表达式

单目运算符

~

按位取反运算符

~表达式

单目运算符

sizeof

长度运算符

sizeof(表达式)


3


/

/表达式

左到右

双目运算符

*

*表达式

双目运算符

%

余数(取模)

/整型表达式

双目运算符

4

+

+表达式

左到右

双目运算符

-

-表达式

双目运算符


5


<< 

左移

<<表达式

左到右

双目运算符

>> 

右移

>>表达式

双目运算符


6


大于

>表达式

左到右

双目运算符

>=

大于等于

>=表达式

双目运算符

小于

<表达式

双目运算符

<=

小于等于

<=表达式

双目运算符

7

==

等于

==表达式

左到右

双目运算符

!=

不等于

!=

双目运算符

8

&

按位与

&表达式

左到右

双目运算符

9

^

按位异或

^表达式

左到右

双目运算符


10


|

按位或

|表达式

左到右

双目运算符

11

&&

逻辑与

&&表达式

左到右

双目运算符

12

||

逻辑或

||表达式

左到右

双目运算符

13

?:

条件运算符

1? 表达式2: 表达式3

右到左

三目运算符

14

=

赋值运算符

=表达式

右到左

赋值运算符

/=

除后赋值

/=表达式

赋值运算符

*=

乘后赋值

*=表达式

赋值运算符

%=

取模后赋值

%=表达式

赋值运算符

+=

加后赋值

+=表达式

赋值运算符

-=

减后赋值

-=表达式

赋值运算符

<<=

左移后赋值

<<=表达式

赋值运算符

>>=

右移后赋值

>>=表达式

赋值运算符

&=

按位与后赋值

&=表达式

赋值运算符

^=

按位异或后赋值

^=表达式

赋值运算符

|=

按位或后赋值

|=表达式

赋值运算符

15

,

逗号运算符

,表达式,…

左到右

逗号运算符


算术运算符

先乘除后加减


个人总结:


1:按运算符优先级从高到低:单目运算符->双目运算符->三目运算符->赋值运算符->逗号运算符

2:在双目运算符中,按运算符优先级从高到低:

1:算术运算符(先乘除后加减)

2:移位运算符

3:关系运算符(其中== 和 !=优先级又较低)

4:逻辑运算符( & > ^ > | > && > ||

3:结合方向:

单目运算符,条件运算符,赋值运算符是自右从左结合的,其他都是自左向右。

IT事业发展做点贡献。