1. 程式人生 > >C語言運算子優先順序口訣

C語言運算子優先順序口訣

基本的優先順序需要記住:

指標最優,單目運算優於雙目運算。如正負號。

先乘除(模),後加減。

先算術運算,後移位運算,最後位運算。

請特別注意:1 << 3 + 2 & 7等價於 (1 << (3 + 2))&7.

邏輯運算最後計算。

C語言常用運算子的優先順序口訣是:“單算關邏條賦逗”;

如果加入位運算子,完整口訣是:“單算移關與,異或邏條賦”。

■“單”表示單目運算子:邏輯非(!),按位取反(~),自增(++),自減(--),取地址(&),取值(*);

■“算”表示算術運算子:乘、除和求餘(*,/,%)級別高於加減(+,-);

■“移”表示按位左移(<<)和位右移(>>);

■“關”表示關係運算符:大小關係(>,>=,<,<=)級別高於相等不相等關係(==,!=);

■“與”表示按位與(&);

■“異”表示按位異或(^);

■“或”表示按位或(|);

■“邏”表示邏輯運算子:邏輯與(&&)級別高於邏輯或(||);

■“條”表示條件運算子(? :);

■“賦”表示賦值運算子(=,+=,-=,*=,/=,%=,>>=,<<=,&=,^=, |=,!=);

◆另,逗號運算子(,) 級別最低,口訣中沒有表述,需另加記憶..

優先順序

運算子

名稱或含義

使用形式

結合方向

說明

1

後置++

後置自增運算子

變數名++

左到右

後置--

後置自減運算子

變數名--

[ ]

陣列下標

陣列名[整型表示式]

( )

圓括號

(表示式)/函式名(形參表)

.

成員選擇(物件)

物件.成員名

->

成員選擇(指標)

物件指標->成員名

2

-

負號運算子

-表示式

右到左

單目運算子

(型別)

強制型別轉換

(資料型別)表示式

前置++

前置自增運算子

++變數名

單目運算子

前置--

前置自減運算子

--變數名

單目運算子

*

取值運算子

*指標表示式

單目運算子

&

取地址運算子

&左值表示式

單目運算子

!

邏輯非運算子

!表示式

單目運算子

~

按位取反運算子

~表示式

單目運算子

sizeof

長度運算子

sizeof 表示式/sizeof(型別)

3

/

表示式/表示式

左到右

雙目運算子

*

表示式*表示式

雙目運算子

%

餘數(取模)

整型表示式%整型表示式

雙目運算子

4

+

表示式+表示式

左到右

雙目運算子

-

表示式-表示式

雙目運算子

5

<< 

左移

表示式<<表示式

左到右

雙目運算子

>> 

右移

表示式>>表示式

雙目運算子

6

大於

表示式>表示式

左到右

雙目運算子

>=

大於等於

表示式>=表示式

雙目運算子

小於

表示式<表示式

雙目運算子

<=

小於等於

表示式<=表示式

雙目運算子

7

==

等於

表示式==表示式

左到右

雙目運算子

!=

不等於

表示式!= 表示式

雙目運算子

8

&

按位與

整型表示式&整型表示式

左到右

雙目運算子

9

^

按位異或

整型表示式^整型表示式

左到右

雙目運算子

10

|

按位或

整型表示式|整型表示式

左到右

雙目運算子

11

&&

邏輯與

表示式&&表示式

左到右

雙目運算子

12

||

邏輯或

表示式||表示式

左到右

雙目運算子

13

?:

條件運算子

表示式1? 表示式2: 表示式3

右到左

三目運算子

14

=

賦值運算子

變數=表示式

右到左

/=

除後賦值

變數/=表示式

*=

乘後賦值

變數*=表示式

%=

取模後賦值

變數%=表示式

+=

加後賦值

變數+=表示式

-=

減後賦值

變數-=表示式

<<=

左移後賦值

變數<<=表示式

>>=

右移後賦值

變數>>=表示式

&=

按位與後賦值

變數&=表示式

^=

按位異或後賦值

變數^=表示式

|=

按位或後賦值

變數|=表示式

15

,

逗號運算子

表示式,表示式,…

左到右

從左向右順序運算

轉換說明符:

%a(%A) 浮點數、十六進位制數字和p-(P-)記數法(C99)

%c 字元

%d 有符號十進位制整數

%f 浮點數(包括float和doulbe)

%e(%E) 浮點數指數輸出[e-(E-)記數法]

%g(%G) 浮點數不顯無意義的零"0"

%i 有符號十進位制整數(與%d相同)

%u 無符號十進位制整數

%o 八進位制整數 e.g. 0123

%x(%X) 十六進位制整數0f(0F) e.g. 0x1234

%p 指標

%s 字串

%% "%"