算術運算子和算術表示式(初學者)

2021-10-01 05:22:47 字數 4295 閱讀 4321

1、c語言的運算子可以分為以下幾類:

1.算術運算子:加(+)、減(-)、乘(*)、除(/)、求餘(%)、自增(++),自減(--)

2.關係運算子:大於(>)、小於(<)、等於(==)、大於等於(>=)、小於等於(<=)、不等於(!=)

3.邏輯運算子:與(&&)、或(||),非(!)

4.位操作運算子:參與運算的量,按二進位制位進行運算。位與(&)、位或(|)、位非(!)、位異或(^)、左移(<<)、右移(>>)

5.賦值運算子:用於賦值運算,分為簡單賦值(=)、復合算術賦值(+=、-=,*=、/=、%=)、和復合位運算賦值(&=、!=、^=、>>=、<<=);

6.條件運算子:這是乙個三目運算子,用於條件求值(?、 :)

7.逗號運算子:用於把若干表示式組合成乙個表示式(,)

9.求位元組數運算子:用於計算資料型別所佔的位元組數(sizeof)

10.特殊運算子:有括號( )、下標[ ]、成員(->,)

注:參與運算量均為整型時,結果也為整形,捨去小數,如果運算量中有乙個是實型,則結果為雙精度實型。

例1:

#include void

main()

例2:

#include void

main()

例3:

#include void

main()

2、運算子的優先順序:c語言中,運算子的優先順序共分十五級。一級最高,十五級最低。在表示式中,優先順序較高的先於優先順序較低的進行運算。而當兩運算子優先順序相同時,則按運算子的結合性所規定的結合方向處理。

3、運算子的結合性:c語言中各運算子的結合性分為兩種,即左結合性和右結合性。如:x=y=2,由於「=」的右結合性,應先執行y=2再執行x=(y= 2)運算。

優先順序運算子名稱或含義

使用形式

結合方向說明1

陣列下標

陣列名[常量表示式]

左到右()

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

.成員選擇(物件)

物件.成員名

->

成員選擇(指標)

物件指標->成員名2-

負號運算子

-常量右到左

單目運算子

(type)

強制型別轉換

(資料型別)表示式

++自增運算子

++變數名

單目運算子

--自減運算子

--變數名

單目運算子

*取值運算子

*指標變數

單目運算子

&取位址運算子

&變數名

單目運算子

!邏輯非運算子

!表示式

單目運算子

~按位取反運算子

~表示式

單目運算子

sizeof

長度運算子

sizeof(表示式)3/

除表示式/表示式

左到右雙目運算子*乘

表示式*表示式

雙目運算子

%餘數(取模)

整型表示式%整型表示式

雙目運算子4+

加表示式+表示式

左到右雙目運算子-減

表示式-表示式

雙目運算子

5<<

左移變數《表示式

左到右雙目運算子

>>

右移變數》表示式

雙目運算子

6>

大於表示式》表示式

左到右雙目運算子

>=

大於等於

表示式》=表示式

雙目運算子

<

小於表示式《表示式

雙目運算子

<=

小於等於

表示式<=表示式

雙目運算子7==

等於表示式==表示式

左到右雙目運算子

!=不等於

表示式!= 表示式

雙目運算子8&

按位與表示式&表示式

左到右雙目運算子9^

按位異或

表示式^表示式

左到右雙目運算子10|

按位或表示式|表示式

左到右雙目運算子

11&&

邏輯與表示式&&表示式

左到右雙目運算子

12||

邏輯或表示式||表示式

左到右雙目運算子

13?:

條件運算子

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

右到左三目運算子14=

賦值運算子

變數=表示式

右到左/=

除后賦值

變數/=表示式

*=乘後賦值

變數*=表示式

%=取模後賦值

變數%=表示式

+=加後賦值

變數+=表示式

-=減後賦值

變數-=表示式

<<=

左移後賦值

變數<<=表示式

>>=

右移後賦值

變數》=表示式

&=按位與後賦值

變數&=表示式

^=按位異或後賦值

變數^=表示式

|=按位或後賦值

變數|=表示式15,

逗號運算子

表示式,表示式,…

左到右從左向右順序運算

4、自增自減運算子:自增1運算子記為「++」,功能是使變數的值自證1。自減1運算子記為「--」,功能是使變數值自減。自增1,自減1運算子均為單目運算子,都具有右結合性。可有以下幾種形式:

++i     i自增1後再參與其他運算;

--i       i自減1後再參與其他運算;

i++     i參與運算後,i的值再自增1;

i--       i參與運算後,i的值再自減1。

在理解和使用上易出錯的是i++和i--。特別是當它們出現在較複雜的表示式或語句中時,常常難於弄清,因此應仔細分析。

例4:

#include void

main()

注:負號不傳導。

例5:

#include void

main()

注:有的編譯系統按照自左向右順序執行括號內的運算,求解完第1個括號的值後會實現i的自加,i值變為6,再求第2個括號的值,結果表示式相當於6+7+8,即21。而另外一些系統(如turbo c和ms c)把3作為表示式中所有i的值,因此3個i相加,得到表示式的值為15。在求出整個表示式的值後i變數再實現自加3次,i的值變為8。

5、賦值運算和賦值表示式:(1)簡單賦值運算子記為「=『。由」=「連線的式子稱為賦值表示式。其一般形式為:變數=表示式。例如:x=a+b

賦值表示式的功能是計算表示式的值再賦予左邊的變數。賦值運算子具有右結合性。因此a=b=c=5可理解為a=(b=(c=5))。

(2)型別轉換:如果賦值運算子兩邊的資料型別不相同,系統將自動進行型別轉換,即把賦值號右邊的型別轉換為左邊的型別,具體規定如下:

a、實型賦予整型,捨去小數部分;

b、整型賦予實型,數值不變,但將以浮點形式存放,即增加小數部分(小數部分值為零);

c、字元型賦予整型,由於字元型為乙個位元組,而整型佔兩個位元組,故將字元的ascii碼值放到整型量的低八位中,高八位為0。整型賦予字元型,只把低八位賦予字元量。

例6

#include void

main()

(3)復合的賦值運算子:在賦值符」=「之前加上其他二目運算子可構成符合賦值符。如:+=、-=、*=、/=、%=、<<=、&=、^=等。

例:a+=5 等價於 a=a+5、x*=y+7 等價於 x=x*(y+7)

符合賦值符這種寫法,對初學者可能不習慣,但十分有利於編譯處理,能提高編譯效率並產生質量較高的編譯**。

(6)逗號運算子和逗號表示式:在c語言中逗號「,」也是一種運算子,稱為逗號運算子,其功能是把兩個表示式連起來組成乙個表示式,稱為逗號表示式。其一般形式為:表示式1,表示式2;

其求值過程是分別求兩個表示式的值,並以表示式2的值作為整個逗號表示式的值。

例7

#include void

main()

注:(1)逗號表示式中的表示式1和表示式2也可以是又是逗號表示式。例:(表示式1,(表示式2,表示式3));

(2)程式**現逗號表示式通常是要分別求逗號表示式內個表示式的值,並不一定要求整個逗號表示式的值。

(3)並不是所有出現逗號表示式的地方都組成逗號表示式,如在變數說明中,函式參考表中逗號只是用作各變數之間的間隔符。

C語言算術運算子和算術表示式

c語言中運算子和表示式數量之多,在高階語言中是少見的。正是豐富的運算子和表示式使c語言功能十分完善。這也是c語言的主要特點之一。c語言的運算子不僅具有不同的優先順序,而且還有乙個特點,就是它的結合性。在表示式中,各運算量參與運算的先後順序不僅要遵守運算子優先順序別的規定,還要受運算子結合性的制約,以...

C 算術運算子與算術表示式

在本章中主要介紹算術運算子與算術表示式,賦值運算子與賦值表示式,逗號運算子與逗號表示式,其他運算子將在以後各章中陸續介紹。常見算數運算子 運算子說明舉例 加法運算子,或正值運算子 3 5,3 減法運算子,或負值運算子 5 2,3 乘法運算子 3 5 除法運算子 5 3 模運算子,或稱求餘運算子 兩側...

算術運算子與算術表示式的例項

1 分離各位數 寫乙個程式,輸入x 三位數 輸出其個 十 百位數,用空格隔開 任務和 版本號 v1.0 問題描述 寫乙個程式,輸入x 三位數 輸出其個 十 百位數,用空格隔開 程式輸出 個 十 百位數。include include int main 執行結果 2.分離整數和小數部分 編寫乙個程式,...