运算符优先级以及结合方向的统计表,网上到处可见。本文画了一张图,以便记忆!

1. 总体来说优先级

初级运算 > 单目运算 > 双目运算 > 三目运算 > 赋值运算 > 逗号运算

2. 双目细分

算术运算 > 位移运算 > 关系运算 > 位运算 > 逻辑运算

其中,取反运算符、逻辑非运算符,都属于单目运算符,优先级高于双目运算符

3. 初级运算符只有四个

最高级的运算符这里称其为初级运算符,分别是 [ ]  ()  .  ->

4. 算术运算符先乘除后加减

算术运算符中,乘、除 的优先级要高于 加、减

5. 关系运算符先大小后相等

关系运算符中,>、>=、<、<= 的优先级要高于 == 、!=

6. 位运算四等级

位运算符分四个等级:

  • 取反:等级最高,为单目运算符
  • 异或

7. 逻辑运算三等级

逻辑运算分三个等级:

  • 逻辑非:等级最高,为单目运算符
  • 逻辑与
  • 逻辑或

8. 运算符结合方向只有3类是从右到左,其余都是从左到右

单目运算、条件运算、赋值运算,这3类的运算符结合防线格式从右往左,其他运算符都是从左往右

附:

运算符优先级和结合方向一览表

优先级

运算符

名称或含义

使用形式

结合方向

说明

1

[]

数组下标

数组名[常量表达式]

左到右

--

()

圆括号

(表达式)/函数名(形参表)

--

.

成员选择(对象)

对象.成员名

--

->

成员选择(指针)

对象指针->成员名

--

2

-

负号运算符

-表达式

右到左

单目运算符

~

按位取反运算符

~表达式

++

自增运算符

++变量名/变量名++

--

自减运算符

--变量名/变量名--

*

取值运算符

*指针变量

&

取地址运算符

&变量名

!

逻辑非运算符

!表达式

(类型)

强制类型转换

(数据类型)表达式

--

sizeof

长度运算符

sizeof(表达式)

--

3

/

表达式/表达式

左到右

双目运算符

*

表达式*表达式

%

余数(取模)

整型表达式%整型表达式

4

+

表达式+表达式

左到右

双目运算符

-

表达式-表达式

5

<< 

左移

变量<<表达式

左到右

双目运算符

>> 

右移

变量>>表达式

6

大于

表达式>表达式

左到右

双目运算符

>=

大于等于

表达式>=表达式

小于

表达式<表达式

<=

小于等于

表达式<=表达式

7

==

等于

表达式==表达式

左到右

双目运算符

!=

不等于

表达式!= 表达式

8

&

按位与

表达式&表达式

左到右

双目运算符

9

^

按位异或

表达式^表达式

左到右

双目运算符

10

|

按位或

表达式|表达式

左到右

双目运算符

11

&&

逻辑与

表达式&&表达式

左到右

双目运算符

12

||

逻辑或

表达式||表达式

左到右

双目运算符

13

? :

条件运算符

表达式1?

表达式2: 表达式3

右到左

三目运算符

14

=

赋值运算符

变量=表达式

右到左

--

/=

除后赋值

变量/=表达式

--

*=

乘后赋值

变量*=表达式

--

%=

取模后赋值

变量%=表达式

--

+=

加后赋值

变量+=表达式

--

-=

减后赋值

变量-=表达式

--

<<=

左移后赋值

变量<<=表达式

--

>>=

右移后赋值

变量>>=表达式

--

&=

按位与后赋值

变量&=表达式

--

^=

按位异或后赋值

变量^=表达式

--

|=

按位或后赋值

变量|=表达式

--

15

逗号运算符

表达式,表达式,…

左到右

--

Logo

有“AI”的1024 = 2048,欢迎大家加入2048 AI社区

更多推荐