C運算符和表達(dá)式_第1頁
C運算符和表達(dá)式_第2頁
C運算符和表達(dá)式_第3頁
C運算符和表達(dá)式_第4頁
全文預(yù)覽已結(jié)束

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)

文檔簡介

1、24 C+的運算符和表達(dá)式運算符是施加在數(shù)據(jù)上的重要操作,變量、常量通過操作符組合成C+的表達(dá)式,構(gòu)成了C+程序的基本要素。本節(jié)將介紹C+語言中基本運算符和表達(dá)式。24 C+中的基本運算符運算是對數(shù)據(jù)的加工過程,而標(biāo)識不同運算的符號稱職運算符,參與運算的數(shù)據(jù)稱為操作數(shù)。表2列出了C+中的基本運算符、其優(yōu)先級及對操作數(shù)的結(jié)合性。優(yōu)先級運算符運算順序功能1717 : :從右向左結(jié)合從左向右結(jié)合全局范圍符(單目)類范圍符(雙目)1616161616 , ( ) ( ) sizeof從左向右結(jié)合從左向右結(jié)合從左向右結(jié)合從左向右結(jié)合從左向右結(jié)合成員選擇符數(shù)組下標(biāo)符函數(shù)調(diào)用類型結(jié)構(gòu)取類型存儲大小15151

2、515151515 +,- ! +,- *,& () new,delete從右向左結(jié)合從右向左結(jié)合從右向左結(jié)合從右向左結(jié)合從右向左結(jié)合從右向左結(jié)合從右向左結(jié)合自增,自減按位反邏輯否單目加,單目減指針操作,取址類型轉(zhuǎn)換動態(tài)空間管理14 -*,*從左向右結(jié)合成員指針選擇13 *,/,%從左向右結(jié)合乘法類運算12 +,-從左向右結(jié)合加法類運算11 從左向右結(jié)合移位運算10 ,=從左向右結(jié)合關(guān)系比較9 = =,!=從左向右結(jié)合等值,不等值比較8 &從左向右結(jié)合按位與7 從左向右結(jié)合按位異或6 |從左向右結(jié)合按位或5 &從左向右結(jié)合邏輯與4 |從左向右結(jié)合邏輯或3 ?:從左向右結(jié)合條件操作符2=,*=,

3、/=,%=,+=,=,=,&=,|=,=從右向左結(jié)合從右向左結(jié)合賦值符1 ,從左向右結(jié)合逗號表達(dá)式 注:優(yōu)先級相同的運算符,其執(zhí)行順序由該運算符在語句中的位置先后決定。 根據(jù)參與運算的操作數(shù)的類型不同,運算符可以分為單目運算符(1個操作數(shù))、雙目運算符(2個操作數(shù))、三目運算符(3個操作數(shù))。有一些運算符既可以是單目的,也可以是雙目的,根據(jù)賦予該運算符的操作數(shù)的不同,運算符具有不同的功能。例如: *pFile; var1*var2;運算符的優(yōu)先級和數(shù)學(xué)運算中的優(yōu)先級意義相同,它決定了一個操作符在表達(dá)式的運算順序,優(yōu)先級越高,運算次序越靠前。而結(jié)合性則決定一個操作符對其操作數(shù)的運算順序。如果一個

4、操作符對其操作數(shù)的操作運算是自左向右執(zhí)行的,則稱該操作符是右結(jié)合的;反之如果一個操作符對其操作數(shù)的操作運算是自右向左執(zhí)行的,則稱該操作符是左結(jié)合實際的。根據(jù)操作符表示的運算的性質(zhì)不同,可以將C+中的操作符分為算術(shù)運算、關(guān)系運算符、邏輯運算符、賦值運算符、條件運算符、自增自減運算符、位運算符和sizeof運算符等。下面分別進(jìn)行討論。 1、算術(shù)運算符 表24列出了C+中的算術(shù)運算符。 表24 C+中的算術(shù)運算符運算符運算操作例子取負(fù)(單目)var+加法var1+var2減法(雙目)var1var2*乘法var1*var2/除法var1/var2%取模(余)var1%var2對于單目運算符,其返回值

5、的數(shù)據(jù)類型與操作數(shù)的數(shù)據(jù)類型相同對于雙目運算符+、*和/,若其兩個操作數(shù)的數(shù)據(jù)類型相同,則返回值的數(shù)據(jù)類型與操作數(shù)的數(shù)據(jù)類型相同;若兩操作數(shù)的數(shù)據(jù)類型不同,則返回值的數(shù)據(jù)類型與字長較長的操作數(shù)的數(shù)據(jù)類型相同。注意:兩個整數(shù)相除的結(jié)果仍然是整數(shù)。若被除數(shù)不能被除數(shù)整除,則相除的結(jié)果將被取整,其小數(shù)部分將被略去。例如:34/7; 125%3(非法) 35%7 在某些情況下,算術(shù)運算表達(dá)式會產(chǎn)生某些問題,計算的結(jié)果將給出錯誤或沒有定義的數(shù)值,這些情況稱為運算異常。對不同的運算異常,將產(chǎn)生不同的后果。在C+中,除數(shù)為零和實數(shù)溢出被視為一個嚴(yán)重的錯誤而導(dǎo)致程序運行的異常終止。而整數(shù)溢出則不被認(rèn)為是一個錯

6、誤(盡管其運算結(jié)果有可能與預(yù)期值不同)。因此,在一些與硬件打交道的低級程序中利用整數(shù)溢出查看設(shè)備的狀態(tài)位等。 2、關(guān)系運算符表25列出了C+中的關(guān)系運算符,它們都是雙目運算符。關(guān)系運算符的返回值只有邏輯真和邏輯假兩種。當(dāng)兩個操作數(shù)滿足關(guān)系運算符所要求的比較關(guān)系時,返回整型數(shù)1(真);否則返回整型數(shù)0(假)。表25 C+中的關(guān)系運算符運算符運算操作使用例子小于var1var2=小于等于var2大于var2var2=大于等于var2=var2= =等于var2= =var2!=不等于var2!=var2例如:var1=85;var2=91; var3=(var1var2)+6; /結(jié)果為7注意:(

7、1)、關(guān)系運算符的兩個操作數(shù)可以是任何基本數(shù)據(jù)類型。 (2)、在進(jìn)行相等及不相等關(guān)系關(guān)系運算時,除了兩個操作數(shù)都有是整型數(shù)之外,由于計算機(jī)的存儲方式及計算誤差,運算結(jié)果常常會與預(yù)期結(jié)果相反。因此,在比較兩個實數(shù)(浮點數(shù)或雙精度型)相等或不等時,常用判斷這兩個操作數(shù)的差值的絕對值小于或大于某一給定的小數(shù)值來代替(可靠性高一些)。 3、邏輯運算符表26列出了C+中的邏輯運算符,邏輯運算符用來表示操作數(shù)的邏輯關(guān)系,其運算結(jié)果是整型數(shù)1或0。邏輯運算的結(jié)果也可以作為一個整型數(shù)用在算術(shù)運算中。表26 C+中的邏輯運算符運算符運算操作使用例子!邏輯反!expr&邏輯與expr1&expr2|邏輯或expr

8、1|expr2注意:在C+中,0被看作邏輯假,而其他的非零值(任意基本數(shù)據(jù)類型)均被視為邏輯真。4、賦值運算符賦值運算符“=”將左邊的變量值或表達(dá)式的值賦給左邊的變量,其結(jié)果是將一個新的數(shù)值存放在左操作數(shù)所占用的內(nèi)存單元中。賦值運算也有返回值,該返回值的數(shù)值是右操作數(shù)的數(shù)值,而其數(shù)據(jù)類型則與左操作數(shù)的數(shù)據(jù)類型相同。同時,賦值運算的運算次序是從右到左進(jìn)行的。所以采用多個賦值運算符可以將多個操作數(shù)連接起來,其運算結(jié)果是將表達(dá)式最右端的操作數(shù)的值賦給其左邊的各個操作數(shù)。例如:var1=var2=var3=var4=21;賦值操作符可以與某些算術(shù)操作符、關(guān)系操作符或位操作符進(jìn)行復(fù)合,產(chǎn)生一個新的雙目操

9、作符,其功能是將該操作符的左、右操作數(shù)分別作為相應(yīng)的算術(shù)操作符、關(guān)系操作符或位操作符的左、右操作數(shù)進(jìn)行相應(yīng)的算術(shù)、比較或位操作,再將運算的結(jié)果賦給復(fù)合操作符的左操作數(shù)。在C+中可以使用的10種復(fù)合操作符,具體如下:+=,=,*=,/=,%=,=,&=,=,|=。例如:var1+=var2; 等價 var1=var1+var2;5、條件運算符條件運算符是C+中唯一的三目運算符,它的使用較為靈活,在某些情況下可以用來代替ifelse語句。條件運算符的語法形式如下:expr1?expr2:expr3;根據(jù)expr1計算的結(jié)果決定計算expr2(結(jié)果非0)或expr3(結(jié)果為0)。整個表達(dá)式的最終返回

10、結(jié)果由表達(dá)式expr2或expr3決定。例如:56?x=5:x=8; 6、自增、自減運算符自增運算符“+”和自減運算符“”主要用在循環(huán)語句中,為循環(huán)控制變量提供格式緊縮的加1和減1運算。例如: i+; 等價于 i=i+1;自增和自減運算符對其操作數(shù)都進(jìn)行賦值,且每種運算符都有前綴和后綴兩種用法。當(dāng)使用前綴用法(例如+i)時,程序首先對該操作數(shù)進(jìn)行引用,再對其進(jìn)行加1或減1用賦值;當(dāng)使用后綴用法(例如i+)時,程序首先對操作數(shù)進(jìn)行加1或減1及賦值,再對該操作數(shù)進(jìn)行引用。例29 自增、自減運算符及其不同用法舉例/EX29cpp/自增、自減操作符及其不同用法#includevoid main()int var1,var2;var1=10;coutvar1=var1n;var2=var1+;coutvar1+=var1n;coutvar2=var1+=var2n;coutnnn;var1=10;coutvar1=var1n;var2=+var1;cout+var1=var1n;co

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論