C 運算子結合性與自增 減運算子

2021-07-09 08:48:28 字數 2161 閱讀 2681

優先順序

運算子名稱或含義

使用形式

結合方向

說明 1

陣列下標

陣列名[常量表示式]

左到右–

()圓括號

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

成員選擇(物件)

物件.成員名

– ->

成員選擇(指標)

物件指標->成員名– 2

-負號運算子

-表示式

右到左單目運算子

~按位取反運算子

~表示式

++自增運算子

++變數名/變數名++

–自減運算子

–變數名/變數名–

* 取值運算子

*指標變數

&取位址運算子

&變數名

!邏輯非運算子

!表示式

(型別)

強制型別轉換

(資料型別)表示式

– sizeof

長度運算子

sizeof(表示式)– 3

/除表示式/表示式

左到右雙目運算子 * 乘

表示式*表示式

% 餘數(取模)

整型表示式%整型表示式 4+

加表示式+表示式

左到右雙目運算子 - 減

表示式-表示式

5<<

左移變數《表示式

左到右雙目運算子

>>

右移變數》表示式

6>

大於表示式》表示式

左到右雙目運算子

>=

大於等於

表示式》=表示式

<

小於表示式《表示式

<=

小於等於

表示式<=表示式 7==

等於表示式==表示式

左到右雙目運算子

!=不等於

表示式!= 表示式 8&

按位與表示式&表示式

左到右雙目運算子 9^

按位異或

表示式^表示式

左到右雙目運算子 10|

按位或表示式|表示式

左到右雙目運算子

11&&

邏輯與表示式&&表示式

左到右雙目運算子

12||

邏輯或表示式||表示式

左到右雙目運算子

13?:

條件運算子

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

右到左三目運算子 14=

賦值運算子

變數=表示式

右到左–

/=除后賦值

變數/=表示式

*= 乘後賦值

變數*=表示式

%= 取模後賦值

變數%=表示式

+= 加後賦值

變數+=表示式

-= 減後賦值

變數-=表示式

<<=

左移後賦值

變數<<=表示式

>>=

右移後賦值

變數》=表示式

&= 按位與後賦值

變數&=表示式

^= 按位異或後賦值

變數^=表示式

|= 按位或後賦值

變數|=表示式 15,

逗號運算子

表示式,表示式,…

左到右–

程式1

int x=5, y=8, c;

c=x+++y;

cout

<< "c is:"

int x=5, y=8, c;

c=++x+y;

cout

<< "c is:"

c=x+y;

x++;

程式2,同上,考慮++是右結合,先計算(++x),此時x=6,再計算c=x+y。

程式3

int i=3, j=3;

c = i+++(++j);

cout

<< "c is"

int i=3;

c = i+++(++i);

cout

<< "c is"

程式4,與程式3類似,應計算c=i+(++i),接著計算++i,此時i=4,接著計算c=i+i=4+4=8;

運算子結合性

在標準c語言的文件裡,對操作符的結合性並沒有做出非常清楚的解釋。乙個滿分的回答是 它是仲裁者,在幾個操作符具有相同的優先順序時決定先執行哪乙個。每個操作符擁有某一級別的優先順序,同時也擁有左結合性或右結合性。優先順序決定乙個不含括號的表示式中運算元之間的 緊密 程度。例如,在表示式a b c中,乘法...

自增運算子 與 自減運算子

字首形式的 操作符出現在運算元的前面。例如 a 說明 運算元的值被相加,而表示式的值就是運算元增加後的值。舉例 int a,b 1 a b b增加至2,a得到的值為2 字尾形式的 操作符出現在運算元的後面。例如 a 說明 運算元的值仍被相加,而表示式的值是運算元增加前的值。舉例 int a,b 1 ...

運算子和結合性

第一級 結合方向自左向右,只用於陣列,作用 1.定義陣列,先定義後使用 2.通過陣列下標訪問陣列元素。int a 10 int arr 10 自定義資料型別 通過結構體的變數訪問內部成員 struct student struct student stu1 stu1.age 23 結構體的指標變數,...