C C 運算子指導原則

2021-06-27 14:53:20 字數 3910 閱讀 4552

本來覺得自己不會被運算子優先順序問題困擾(實際自己寫程式時也確實如此),但無奈有些地就考你這個,看了幾篇大牛的部落格,精簡的總結如下三條指導原則:

1.優先順序表(起碼有個大概)

2.大多數運算子結合方向是「自左至右」, 即: 先左後右, 例如a- b+c

, b 兩側有- 和+兩種運算子的優先順序相同, 按先左後右結合方向, b 先與減號結合, 執行a- b 的運算, 再執行加c 的運算。

除了自左至右的結合性外, 

c 語言有三類運算子參與運算的結合方向是從右至左

。即: 單目運算子, 條件運算子, 以及賦值運算子

3.自己寫時,加括號(這個最實用了吧)

運算子優先順序表:

優先順序

運算子

名稱或含義

使用形式

結合方向

說明

1

陣列下標

陣列名[常量表示式]

左到右--

()

圓括號(表示式)/函式名(形參表)

--.

成員選擇(物件)

物件.成員名

---<

成員選擇(指標)

物件指標-《成員名

--2

-

負號運算子

-表示式

右到左

單目運算子

~

按位取反運算子

~表示式

++

自增運算子

++變數名/變數名++

--

自減運算子

--變數名/變數名--

*

取值運算子

*指標變數

&

取位址運算子

&變數名

!

邏輯非運算子

!表示式

(

型別)

強制型別轉換

(資料型別)表示式

--sizeof

長度運算子

sizeof(表示式)

--3

/

表示式/表示式

左到右雙目運算子

*

表示式*表示式

%

餘數(取模)

整型表示式%整型表示式

4

+

表示式+表示式

左到右雙目運算子

-

表示式-表示式

5

< span>左移

變數< p>

左到右雙目運算子

<<右移

變數《表示式

6

<大於

表示式《表示式

左到右雙目運算子

<=

大於等於

表示式<=表示式

< span>小於

表示式< p>

< span>

小於等於

表示式< p>

7

==等於

表示式==表示式

左到右雙目運算子

=

不等於表示式!= 表示式

8

&

按位與表示式&表示式

左到右雙目運算子

9

^

按位異或

表示式^表示式

左到右雙目運算子

10

|

按位或表示式|表示式

左到右雙目運算子

11

&&

邏輯與表示式&&表示式

左到右雙目運算子

12

||

邏輯或表示式||表示式

左到右雙目運算子

13

?:

條件運算子

表示式1?

表示式2: 表示式3

右到左

三目運算子

14

=

賦值運算子

變數=表示式

右到左--

/=

除后賦值

變數/=表示式

--*=

乘後賦值

變數*=表示式

--%=

取模後賦值

變數%=表示式

--+=

加後賦值

變數+=表示式

---=

減後賦值

變數-=表示式

--< span>

左移後賦值

變數< p>

--<<=

右移後賦值

變數<<=表示式

--&=

按位與後賦值

變數&=表示式

--^=

按位異或後賦值

變數^=表示式

--|=

按位或後賦值

變數|=表示式

--15

逗號運算子

表示式,表示式,…

左到右--

說明:

運算子共分為15級,1級優先順序最高,15級優先順序最低。

同一優先順序的運算子,運算次序由結合方向所決定。(結合性:2 13 14 是從右至左 其他都是從左至右)

簡單記就是:! < 算術運算子 < 關係運算子< && < || < 賦值運算子

C C 運算子 運算

規則 1 1 1 1 0 1 0 1 1 0 0 0 按位或運算 按位或運算子 是雙目運算子。其功能是參與運算的兩數各對應的二進位 也就是最後一位 相或。只要對應的二個二進位有乙個為1時,結果位就為1。參與 運算的兩個數均以補碼出現。例如 9 5可寫算式如下 00001001 00000101 00...

C C ,運算子過載

編輯運算子過載原始檔overload.cpp include using namespace std class complex complex double r,double i complex operator complex c2 void display private double rea...

C C 運算子高階

1 轉換運算子 一種特殊的類成員函式。定義該運算子後,編譯器將在可以使用內建轉換的地方自動呼叫它 class smallint 轉換函式必須是成員函式,通常定義為const operator int const private std size t m val int main si轉換成int,再...