第3章數(shù)據(jù)類型與表達(dá)式_第1頁
第3章數(shù)據(jù)類型與表達(dá)式_第2頁
第3章數(shù)據(jù)類型與表達(dá)式_第3頁
第3章數(shù)據(jù)類型與表達(dá)式_第4頁
第3章數(shù)據(jù)類型與表達(dá)式_第5頁
已閱讀5頁,還剩92頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

第3章數(shù)據(jù)類型與表達(dá)式第3章數(shù)據(jù)類型與表達(dá)式3.1引例3.2C語言的數(shù)據(jù)類型3.3常量與變量3.4基本數(shù)據(jù)類型3.5運(yùn)算符和表達(dá)式3.6類型轉(zhuǎn)換本單元內(nèi)容3.1引例計(jì)算機(jī)的應(yīng)用7.1引例高級(jí)語言程序設(shè)計(jì)計(jì)算機(jī)程序數(shù)據(jù)任何高級(jí)語言的程序設(shè)計(jì)都要規(guī)定數(shù)據(jù)類型,以及數(shù)據(jù)的運(yùn)算方式的規(guī)范3.2C語言的數(shù)據(jù)類型C語言豐富的數(shù)據(jù)類型3.3常量與變量3.3.1常量3.3.2變量3.3.3常變量3.3.4標(biāo)識(shí)符本節(jié)內(nèi)容3.3.1常量在程序執(zhí)行過程中其值不發(fā)生改變的量。整型常量、字符型常量、實(shí)型常量、枚舉常量(第10章介紹)、字符串常量、符號(hào)常量概念和種類3.3.1常量整型常量進(jìn)制整數(shù)19整數(shù)-19表示特點(diǎn)十進(jìn)制19-19由0~9的數(shù)字序列組成,數(shù)字前可帶正負(fù)號(hào)八進(jìn)制023-023由數(shù)字0開頭,后跟0~7的數(shù)字序列組成十六進(jìn)制0x13-0x1F以0x或0X開頭,后面跟一串十六進(jìn)制數(shù)字(0~9,a~f,A~F)組成3.3.1常量實(shí)型常量形式實(shí)例表示特點(diǎn)十進(jìn)制小數(shù)3.14,-1.25,.87由數(shù)字、小數(shù)點(diǎn)與正負(fù)號(hào)組成,且必須有小數(shù)點(diǎn)指數(shù)形式1.2e3,3.15e-6分別等價(jià)于1.2×103,3.15×10-6指數(shù)形式由數(shù)字、小數(shù)點(diǎn)、字母e或E及正負(fù)號(hào)組成,注意:e或E之前必須有數(shù)字,可以表示成整數(shù)或小數(shù)形式,e或E其后指數(shù)必須為整數(shù),如不能寫成e6、13e3.53.3.1常量普通字符常量。使用單撇號(hào)括起來的一個(gè)字符,如'A','?','7','#',等.轉(zhuǎn)義字符常量。就是在某些特定字符前加“\”,表示某種特殊的意義或控制動(dòng)作。(如表3.3.3)字符型常量3.3.1常量字符串常量是用一組雙撇號(hào)括起來的若干字符序列。如果在一個(gè)字符串中一個(gè)字符也沒有,將其稱為空串。例如,"china"、"hello?。ⅰⅲ?014130789"字符串常量關(guān)于字符串常量需要注意以下幾點(diǎn)。(1)字符串常量是雙撇號(hào)中的全部字符,但是不包括雙撇號(hào)本身。(2)注意不能錯(cuò)寫成單撇號(hào),如'china','girl'。單撇號(hào)中只能包含一個(gè)字符,雙撇號(hào)才可以包含一個(gè)字符串。3.3.1常量用一個(gè)符號(hào)名代表的常量。使用#define指令可以指定常量的符號(hào)名。符號(hào)常量【例3.1】使用符號(hào)常量來表示單價(jià),根據(jù)給出的銷售量num,計(jì)算出總銷售額,最后輸出結(jié)果。3.3.1常量符號(hào)常量含義清楚能做到“一改全改”這行行尾沒有分號(hào),符號(hào)常量名一般用大寫3.3.2變量變量就是在程序運(yùn)行過程中,其值可改變的量。變量用來存放數(shù)據(jù),也就是存放變量的值。變量在內(nèi)存中占據(jù)一定的存儲(chǔ)單位,一般要占用多個(gè)字節(jié)概念3.3.2變量3.3.2變量(1)使用變量必須遵循“先定義,后使用”的原則。使用變量的注意事項(xiàng)3.3.2變量(2)變量的定義方法。在定義變量時(shí),需要聲明變量的類型和變量名。變量定義的一般形式為:使用變量的注意事項(xiàng)類型關(guān)鍵字

變量名;例如:intsum;表示定義一個(gè)整型變量,變量名是sum。3.3.2變量(3)變量名和變量值是兩個(gè)不同的概念。一個(gè)變量有三要素,分別是變量類型、變量名和變量值。變量名是一個(gè)符號(hào)地址,對(duì)應(yīng)一個(gè)物理地址。變量類型決定了變量所占用的存儲(chǔ)單元的多少。變量的值是存儲(chǔ)單元中的值(二進(jìn)制數(shù))。使用變量的注意事項(xiàng)3.3.2變量使用變量的注意事項(xiàng)例如:shortintsum=3;變量名:sum變量類型:短整型,占2字節(jié)變量值:33.3.2變量(4)變量值的存取步驟。通過變量名找到相應(yīng)的內(nèi)存單元。根據(jù)變量的類型確定要存取的字節(jié)數(shù)。按要求讀或?qū)懽兞康闹怠J褂米兞康淖⒁馐马?xiàng)3.3.3常變量在程序運(yùn)行過程中值不改變的變量。常變量的定義需要使用const關(guān)鍵字。需要注意的是,const定義的常變量只能在定義的時(shí)候賦初值,不能在程序中改變其值。概念其形式如下:const

變量類型變量名=變量值;例如:constfloatprice=35.5;常變量與直接常量有什么區(qū)別?常變量與符號(hào)常量又有什么不同呢?思考#definePRICE35.5 //定義符號(hào)常量constfloatprice=35.5; //定義常變量3.3.4標(biāo)識(shí)符概念名字在日常生活中的重要性?人名、地名、事物名等。在數(shù)學(xué)中也常常用到變量名或函數(shù)名在編程語言中,對(duì)于變量、常量、函數(shù)、類型等也有名字,這些名字在程序設(shè)計(jì)語言中統(tǒng)稱為標(biāo)識(shí)符。3.3.4標(biāo)識(shí)符在C語言中把標(biāo)識(shí)符分為三類:關(guān)鍵字預(yù)定義標(biāo)識(shí)符用戶自定義標(biāo)識(shí)符。標(biāo)識(shí)符分類3.3.4標(biāo)識(shí)符(1)關(guān)鍵字是事先定義的,有特別意義的標(biāo)識(shí)符,有時(shí)稱為保留字。ANSIC定義了32個(gè)關(guān)鍵字。關(guān)鍵字autobreakcasecharconstcontinuedefaultdodoubleelseenumexternfloatforgotoifintlongregisterreturnshortsignedsizeofstaticstructswitchtypedefunionunsignedvoidvolatilewhile

3.3.4標(biāo)識(shí)符(2)預(yù)定義標(biāo)識(shí)符是C語言中系統(tǒng)預(yù)先定義的標(biāo)識(shí)符,如系統(tǒng)類庫名、系統(tǒng)常量名、系統(tǒng)函數(shù)名(如:scanf,printf)。預(yù)定義標(biāo)識(shí)符3.3.4標(biāo)識(shí)符(3)用戶自定義標(biāo)識(shí)符用戶自定義標(biāo)識(shí)符命名規(guī)則:①標(biāo)識(shí)符由字母(A~Z,a~z)、數(shù)字(0~9)、下畫線“_”組成,并且首字符不能是數(shù)字,只能是字母或者下畫線。②不能把C語言關(guān)鍵字作為用戶標(biāo)識(shí)符③標(biāo)識(shí)符長度是由機(jī)器上的編譯系統(tǒng)決定的。④標(biāo)識(shí)符對(duì)大小寫敏感,即嚴(yán)格區(qū)分大小寫。⑤標(biāo)識(shí)符命名應(yīng)做到“見名知意”,如長度(length)、求和(sum)、圓周率(pi)等。以下是正確的用戶自定義標(biāo)識(shí)符是:A.stu-scoreB.2015stuC.charD.stu2014E.$num答案:D3.4基本數(shù)據(jù)類型3.4.1整型數(shù)據(jù)3.4.2浮點(diǎn)型數(shù)據(jù)3.4.3字符型數(shù)據(jù)3.4.1整型數(shù)據(jù)分類類型名稱關(guān)

字字

節(jié)

數(shù)基本整型intTurboC2.0中占2個(gè),VC++6.0中占4個(gè)短整型shortintVC++6.0中占2個(gè)字節(jié)長整型longintVC++6.0中占4個(gè)字節(jié)雙長整型longlongint8個(gè)字節(jié),C99新增的類型7.4.1字符數(shù)組的定義與引用定義字符數(shù)組的方法與定義數(shù)值型數(shù)組的方法類似,只是數(shù)組的基類型是char字符數(shù)組元素值為字符

存儲(chǔ)的是字符對(duì)應(yīng)的ASCII碼字符數(shù)組的定義3.4.1整型數(shù)據(jù)1.基本整型(int)基本整型在存儲(chǔ)單元中的存儲(chǔ)方式是:用整型的補(bǔ)碼形式存儲(chǔ)。3.4.1整型數(shù)據(jù)1.基本整型(int)--溢出【例3.2】下面舉一個(gè)整型變量溢出的例子。3.4.1整型數(shù)據(jù)短整型使用的關(guān)鍵字是shortint或short。如果使用VisualC++6.0,編譯系統(tǒng)分配給int數(shù)據(jù)4個(gè)字節(jié),分配短整型2個(gè)字節(jié)。短整型在內(nèi)存中的存儲(chǔ)方式與int型相同。因此可以計(jì)算出一個(gè)短整型變量的值的十進(jìn)制取值范圍為:-32768~32767。2.短整型3.4.1整型數(shù)據(jù)長整型使用的關(guān)鍵字longint或long。如果使用VisualC++6.0,編譯系統(tǒng)分配給long數(shù)據(jù)4個(gè)字節(jié)。長整型在內(nèi)存中的存儲(chǔ)方式與int類型也相同,因此可以計(jì)算出一個(gè)長整型變量的值的十進(jìn)制取值范圍是-2147483648~2147483647。3.長整型(longint)3.4.1整型數(shù)據(jù)雙長整型使用關(guān)鍵字longlongint或longlong,一般為雙長整型分配8個(gè)字節(jié),該類型是C99新增的數(shù)據(jù)類型,但許多C編譯系統(tǒng)尚未實(shí)現(xiàn)。4.雙長整型(longlongint)3.4.1整型數(shù)據(jù)5.sizeof運(yùn)算符sizeof(short)<=sizeof(int)<=sizeof(long)<=sizeof(longlong)3.4.1整型數(shù)據(jù)6.擴(kuò)展的整型數(shù)據(jù)類型名稱關(guān)鍵字字節(jié)數(shù)取值范圍有符號(hào)基本整型[signed]int2-32768~32767,即-215~215-14-2147483648~2147483647,即-231~231-1無符號(hào)基本整型unsigned[int]20~65535,即216-1有符號(hào)短整型[signed]short[int]2-32768~32767,即-215~215-1無符號(hào)短整型unsignedshort[int]20~65535,即216-1有符號(hào)長整型[signed]long[int]4-2147483648~2147483647,即-231~231-1無符號(hào)長整型unsignedlong[int]40~4294967295,即0~232-1有符號(hào)雙長整型[signed]longlong[int]8-9223372036854775808~9223372036854775807即-263~263-1無符號(hào)雙長整型unsignedlonglong[int]80~18446744073709551615,即0~264-13.4.2浮點(diǎn)型數(shù)據(jù)浮點(diǎn)數(shù)的一般表示形式為:N=2E×D,其中,D稱為尾數(shù),E稱為階碼表示形式3.4.2浮點(diǎn)型數(shù)據(jù)3.4.2浮點(diǎn)型數(shù)據(jù)類型類型字節(jié)數(shù)有效數(shù)字?jǐn)?shù)值范圍(絕對(duì)值)float46~70以及1.2×10-38~3.4×1038double815~160以及2.3×10-308~1.7×10308longdouble815~160以及2.3×10-308~1.7×103081619~200以及3.4×10-4932~1.1×1049323.4.2浮點(diǎn)型數(shù)據(jù)精度比較【例3.4】將同一個(gè)實(shí)型數(shù)分別賦值給單精度實(shí)型和雙精度實(shí)型變量,然后輸出結(jié)果。3.4.3字符型數(shù)據(jù)字符在計(jì)算機(jī)中是按其ASCII碼形式存儲(chǔ)的,因此C99把字符型數(shù)據(jù)作為整數(shù)類型的一種。存儲(chǔ)形式注意:在編寫程序中,不是任意的字符與字符代碼程序都能識(shí)別。例如,圓周率π、≠、≤、≥等符號(hào),在程序中是不能被識(shí)別的,因此在編寫程序的時(shí)候,只能使用系統(tǒng)規(guī)定的字符集中的字符。3.4.3字符型數(shù)據(jù)字符變量使用關(guān)鍵字char定義。char是英文character(字符)的縮寫。字符變量charcChar;/*定義字符型變量*/cChar=’?’;/*為字符變量賦值*/從字符變量的存儲(chǔ)形式可以看出,cChar是字符變量,實(shí)際上是一個(gè)字節(jié)的整型變量,因?yàn)樗S脕泶娣抛址?,所以稱為字符變量。實(shí)際可以把0~127之間的整數(shù)賦值給一個(gè)字符變量。3.4.3字符型數(shù)據(jù)使用字符變量時(shí),需要注意以下幾方面:(1)用來存放字符常量,只能是一個(gè)字符。注意事項(xiàng)charc1,c2;c1='a';c2='A';charc1,c2;c1='ab';c2='AB';3.4.3字符型數(shù)據(jù)使用字符變量時(shí),需要注意以下幾方面:

(2)字符數(shù)據(jù)和整型數(shù)據(jù)之間可以通用,可以按字符形式輸出,也可以按整型輸出。注意事項(xiàng)3.4.3字符型數(shù)據(jù)使用字符變量時(shí),需要注意以下幾方面:(3)字符數(shù)據(jù)與整數(shù)直接進(jìn)行算術(shù)運(yùn)算。注意事項(xiàng)3.4.3字符型數(shù)據(jù)使用字符變量時(shí),需要注意以下幾方面:(4)字符數(shù)據(jù)與整型數(shù)據(jù)可互相賦值注意事項(xiàng)3.4.3字符型數(shù)據(jù)使用字符變量時(shí),需要注意以下幾方面:(5)由于字符型數(shù)據(jù)在內(nèi)存中只占用一個(gè)字節(jié),因此當(dāng)大于255的整型數(shù)據(jù)賦給它時(shí)要產(chǎn)生溢出。(6)整型變量可以用signed和unsigned關(guān)鍵字修飾,字符型也屬于整型,也可以使用signed和unsigned關(guān)鍵字修飾。注意事項(xiàng)3.4.4如何確定常量的類型常量的類型常量類型表示形式字符型由單撇號(hào)界定起來的單個(gè)字符或轉(zhuǎn)義字符整型1.用不帶小數(shù)點(diǎn)的合法數(shù)值表示,但是因?yàn)楦鞣N整型類型有取值范圍。2.一個(gè)整數(shù)末尾如果加大寫字母L或小寫字母l,表示該數(shù)是長整型,如345l、345L等。鑒于VisualC++中int和longint型數(shù)據(jù)的取值范圍一樣,因此也沒有必要非要選擇longint型浮點(diǎn)型1.在浮點(diǎn)型的實(shí)型常量的末尾加專用字符,可以強(qiáng)制指定常量的類型。2.VisualC++編譯系統(tǒng)把合法表示的浮點(diǎn)型中的實(shí)型常量末尾不加任何字符,都默認(rèn)按照雙精度處理,分配8個(gè)字節(jié)。3.在浮點(diǎn)型的實(shí)型常量的末尾加字母F或f,則表示是單精度float類型。4.在浮點(diǎn)型的實(shí)型常量的末尾加字母L或l,則表示是longdouble類型3.5運(yùn)算符和表達(dá)式程序要進(jìn)行計(jì)算除了需要數(shù)據(jù)之外,還需要什么?引題運(yùn)算符表達(dá)式3.5運(yùn)算符和表達(dá)式3.5.1運(yùn)算符和表達(dá)式簡(jiǎn)介3.5.2算術(shù)運(yùn)算符和算術(shù)表達(dá)式3.5.3賦值運(yùn)算符和賦值表達(dá)式3.5.4逗號(hào)運(yùn)算符和逗號(hào)表達(dá)式3.5.5位運(yùn)算符與位運(yùn)算表達(dá)式3.5.1運(yùn)算符和表達(dá)式簡(jiǎn)介C語言提供了34種運(yùn)算符(附錄B,303頁)運(yùn)算符按照操作數(shù)的個(gè)數(shù)分為單目運(yùn)算符、雙目運(yùn)算符和三目運(yùn)算符運(yùn)算符的運(yùn)算優(yōu)先級(jí)共分為15級(jí)。1級(jí)最高,15級(jí)最低運(yùn)算符的結(jié)合性表明運(yùn)算時(shí)的結(jié)合方向。有兩種結(jié)合方向:一種是左結(jié)合,即從左向右計(jì)算;一種是右結(jié)合,即從右向左計(jì)算。運(yùn)算符3.5.1運(yùn)算符和表達(dá)式簡(jiǎn)介左結(jié)合右結(jié)合運(yùn)算符的結(jié)合性例如,算術(shù)運(yùn)算符的結(jié)合性是自左至右,即先左后右。如有表達(dá)式a-b+c則b應(yīng)先與“-”號(hào)結(jié)合,執(zhí)行a-b運(yùn)算,然后再執(zhí)行+c的運(yùn)算。最典型的右結(jié)合性運(yùn)算符是賦值運(yùn)算符。如a=b=c,由于“=”的右結(jié)合性,應(yīng)先執(zhí)行b=c再執(zhí)行a=(b=c)運(yùn)算。3.5.1運(yùn)算符和表達(dá)式簡(jiǎn)介由運(yùn)算符及操作數(shù)組成的式子。操作數(shù)也稱為運(yùn)算對(duì)象,它既可以是常量、變量,也可以是函數(shù)調(diào)用。根據(jù)運(yùn)算符的種類,可以分成不同類別的表達(dá)式。算術(shù)運(yùn)算符和算術(shù)表達(dá)式、賦值運(yùn)算符和賦值表達(dá)式、逗號(hào)運(yùn)算符和逗號(hào)表達(dá)式、位運(yùn)算符與位運(yùn)算表達(dá)式表達(dá)式3.5.2算術(shù)運(yùn)算符和算術(shù)表達(dá)式1.基本算術(shù)運(yùn)算符符號(hào)含義類別優(yōu)先級(jí)結(jié)合性-取相反數(shù)單目2右結(jié)合*乘法雙目3左結(jié)合/除法雙目3左結(jié)合%求余雙目3左結(jié)合+加法雙目4左結(jié)合-減法雙目4左結(jié)合3.5.2算術(shù)運(yùn)算符和算術(shù)表達(dá)式“/”運(yùn)算符除法運(yùn)算的兩個(gè)操作數(shù)都是整數(shù),則除法運(yùn)算相當(dāng)于數(shù)學(xué)中的取整,結(jié)果仍為整數(shù)。1.基本算術(shù)運(yùn)算符例如,3/4與3.0/4的結(jié)果是不相同的,3/4=0,3.0/4=0.75。所以除法可以分為整數(shù)除法和浮點(diǎn)數(shù)除法。兩個(gè)操作數(shù)中只要有一個(gè)數(shù)是浮點(diǎn)數(shù),則可以按照浮點(diǎn)數(shù)除法對(duì)待。特別注意例如,在VisualC++6.0編譯環(huán)境下4/-3=-1 -4/3=-1 -4/-3=1 4/3=13.5.2算術(shù)運(yùn)算符和算術(shù)表達(dá)式“%”求余運(yùn)算限制求余運(yùn)算的兩個(gè)操作數(shù)必須為整數(shù),不能對(duì)兩個(gè)實(shí)型數(shù)進(jìn)行求余運(yùn)算。其中求余運(yùn)算符的左操作數(shù)作為被除數(shù),右操作數(shù)作為除數(shù),兩個(gè)數(shù)整除后的余數(shù)即為求余運(yùn)算的結(jié)果,其中余數(shù)的符號(hào)與被除數(shù)的符號(hào)相同。1.基本算術(shù)運(yùn)算符例如,在VisualC++6.0編譯環(huán)境下,求余的計(jì)算結(jié)果:13%4=1,13%-4=1,-13%4=-1,-13%-4=-1。特別注意3.5.2算術(shù)運(yùn)算符和算術(shù)表達(dá)式表達(dá)式先使用優(yōu)先級(jí)高的運(yùn)算符,相同優(yōu)先級(jí)的運(yùn)算符進(jìn)行混合運(yùn)算時(shí),需要考慮運(yùn)算符的結(jié)合性。1.基本算術(shù)運(yùn)算符例如,算術(shù)表達(dá)式:-2*8/4%3+10-6式子等價(jià)于(((-2)*8)/4)%3+10-6,式子的結(jié)果值是3。?給出一個(gè)3位數(shù),如123,如何計(jì)算出這個(gè)3位數(shù)的個(gè)位、十位、百位?3.5.2算術(shù)運(yùn)算符和算術(shù)表達(dá)式對(duì)變量的加1和減1,是一種很常見的運(yùn)算2.自增自減運(yùn)算符優(yōu)先級(jí)結(jié)合性符號(hào)含義類別例子2右結(jié)合++自增運(yùn)算符單目運(yùn)算符i++++i2右結(jié)合--自增運(yùn)算符單目運(yùn)算符i----i3.5.2算術(shù)運(yùn)算符和算術(shù)表達(dá)式對(duì)變量的加1和減1,是一種很常見的運(yùn)算++i,--i:在使用i之前,先使i的值加(減)1i++,i--:在使用i之后,使i的值加(減)12.自增自減運(yùn)算符m=++i;<=>i=i+1;

m=i;m=i++;<=>m=i;i=i+1;下面的語句盡量少用,可讀性差,并且環(huán)境不同,計(jì)算結(jié)果可能不同。M=++a+a++-a--;通常良好的編程風(fēng)格提倡在一行語句中一個(gè)變量最多只出現(xiàn)一次自增或自減運(yùn)算符。因?yàn)檫^多的自增1和自減1混合運(yùn)算,會(huì)導(dǎo)致程序的可讀性變差。3.5.3賦值運(yùn)算符和賦值表達(dá)式符號(hào)及含義優(yōu)先級(jí)結(jié)合性符號(hào)含義類別例子14右結(jié)合=簡(jiǎn)單賦值運(yùn)算符雙目x=a+b+=復(fù)合賦值運(yùn)算符雙目x+=ax=x+a-=雙目x-=ax=x-a*=雙目x*=ax=x*a/=雙目x/=ax=x/a%=雙目x%=ax=x%a<<=雙目x<<=ax=x<<a>>=雙目x>>=ax=x>>a&=雙目x&=ax=x&a∧=雙目x∧=ax=x∧a|=雙目x|=ax=x|a3.5.3賦值運(yùn)算符和賦值表達(dá)式賦值表達(dá)式簡(jiǎn)單賦值運(yùn)算符很簡(jiǎn)單,賦值表達(dá)式的一般形式是:變量名=表達(dá)式右側(cè)表達(dá)式的值賦值給左側(cè)的變量,因此“=”號(hào)左側(cè)不允許是表達(dá)式。例如,在C語言中x+y=z是錯(cuò)誤的,雖然該式子在數(shù)學(xué)中是正確的。3.5.3賦值運(yùn)算符和賦值表達(dá)式注意+=、-=、*=、/=、%=之間不能有空格。復(fù)合賦值運(yùn)算符注:在數(shù)學(xué)中i=i+1是無意義的且不成立,而在C語言中是有意義的,其意思是取出i的值后加1,然后再賦值給i(存入i所在的存儲(chǔ)單元)3.5.3賦值運(yùn)算符和賦值表達(dá)式復(fù)合賦值表達(dá)式復(fù)合賦值表達(dá)式的一般等價(jià)形式:變量名

其他運(yùn)算符=表達(dá)式

等價(jià)于

變量名=變量名其他運(yùn)算符(表達(dá)式)例如,表達(dá)式x*=y+1等價(jià)于x=x*(y+1)思考:已知變量sum的初值為5,請(qǐng)思考表達(dá)式sum+=sum*=sum%3求解之后變量sum的值。答案:203.5.4逗號(hào)運(yùn)算符和逗號(hào)表達(dá)式逗號(hào)表達(dá)式逗號(hào)表達(dá)式的一般形式為:表達(dá)式1,表達(dá)式2,…,表達(dá)式n逗號(hào)表達(dá)式的求解過程是:先求解表達(dá)式1,再求解表達(dá)式2,…,一直求解到表達(dá)式n。整個(gè)逗號(hào)表達(dá)式的值是表達(dá)式n的值。逗號(hào)運(yùn)算符的優(yōu)先級(jí)是15,在所有基本運(yùn)算符中優(yōu)先級(jí)是最低的。逗號(hào)運(yùn)算符的結(jié)合性是左結(jié)合。逗號(hào)運(yùn)算符通常配合for循環(huán)使用。for(sum=0,i=0;i<100;i++){……..}3.5.4逗號(hào)運(yùn)算符和逗號(hào)表達(dá)式逗號(hào)表達(dá)式對(duì)于逗號(hào)表達(dá)式還要說明以下兩點(diǎn):(1)程序中使用逗號(hào)表達(dá)式,通常是要分別求逗號(hào)表達(dá)式內(nèi)各表達(dá)式的值,并不一定要求整個(gè)逗號(hào)表達(dá)式的值。(2)并不是在所有出現(xiàn)逗號(hào)的地方都組成逗號(hào)表達(dá)式,如在變量說明中,函數(shù)參數(shù)表中逗號(hào)只是用作各變量之間的間隔符。3.5.4逗號(hào)運(yùn)算符和逗號(hào)表達(dá)式逗號(hào)表達(dá)式請(qǐng)計(jì)算變量a1和變量a2的值。inta1,a2,b=2,c=7,d=5;

a1=(b+1,c-1,d+3); //變量a1的賦值語句a2=b+1,c-1,d+3; //變量a2的賦值語句答案:a1=8a2=33.5.5位運(yùn)算符與位運(yùn)算表達(dá)式符號(hào)含義類別優(yōu)先級(jí)結(jié)合性~取反單目運(yùn)算符2右結(jié)合<<

左移雙目運(yùn)算符5左結(jié)合>>

右移雙目運(yùn)算符5左結(jié)合&按位與雙目運(yùn)算符8左結(jié)合^按位異或雙目運(yùn)算符9左結(jié)合|按位或雙目運(yùn)算符10左結(jié)合3.5.5位運(yùn)算符與位運(yùn)算表達(dá)式1.取反運(yùn)算符取反運(yùn)算符“~”是單目運(yùn)算符,具有右結(jié)合性。其功能是對(duì)參與運(yùn)算的數(shù)的各二進(jìn)制位按位求反,即將二進(jìn)制位的0變?yōu)?,1變?yōu)?。例如,~(1001)2=(0110)2。3.5.5位運(yùn)算符與位運(yùn)算表達(dá)式1.取反運(yùn)算符【例3.5】使用程序?qū)崿F(xiàn)把整數(shù)b賦值為由整數(shù)a進(jìn)行取反后的結(jié)果。3.5.5位運(yùn)算符與位運(yùn)算表達(dá)式2.左移運(yùn)算符左移運(yùn)算符“<<”是雙目運(yùn)算符。其功能把“<<”左邊的運(yùn)算數(shù)的各二進(jìn)制位全部左移若干位,由“<<”右邊的數(shù)指定移動(dòng)的位數(shù),高位丟棄,低位補(bǔ)0。例如:若a=00000011(十進(jìn)制數(shù)3),左移4位后為00110000(十進(jìn)制數(shù)48)。3.5.5位運(yùn)算符與位運(yùn)算表達(dá)式2.左移運(yùn)算符左移一位相當(dāng)于該數(shù)乘以2,左移2位相當(dāng)于該數(shù)乘以22=4。(此結(jié)論只適用于該數(shù)左移時(shí)被溢出舍棄的高位中不包含1的情況)3.5.5位運(yùn)算符與位運(yùn)算表達(dá)式3.右移運(yùn)算符右移運(yùn)算符“>>”是雙目運(yùn)算符。其功能是把“>>”左邊的運(yùn)算數(shù)的各二進(jìn)制位全部右移若干位,“>>”右邊的數(shù)指定移動(dòng)的位數(shù)。例如,a>>2指把a(bǔ)的各二進(jìn)制位向右移動(dòng)2位。若a=000001111(十進(jìn)制數(shù)15),左移2位后為00000011(十進(jìn)制數(shù)3)。3.5.5位運(yùn)算符與位運(yùn)算表達(dá)式4.按位與運(yùn)算符按位與運(yùn)算符“&”是雙目運(yùn)算符。其功能是參與運(yùn)算的兩個(gè)數(shù)各對(duì)應(yīng)的二進(jìn)制位相與。只有對(duì)應(yīng)的兩個(gè)二進(jìn)制位均為1時(shí),結(jié)果位才為1,否則為0。注意參與運(yùn)算的數(shù)以補(bǔ)碼方式出現(xiàn)。例如,3&4(假設(shè)以一個(gè)字節(jié)存儲(chǔ)一個(gè)整數(shù))。00000011&0000010000000000由此得3&4=0。按位與運(yùn)算通常用來對(duì)某些位清0或保留某些位。3.5.5位運(yùn)算符與位運(yùn)算表達(dá)式5.按位異或運(yùn)算符按位異或運(yùn)算符“^”是雙目運(yùn)算符。其功能是參與運(yùn)算的兩個(gè)數(shù)各對(duì)應(yīng)的二進(jìn)制位相異或。運(yùn)算法則是當(dāng)兩個(gè)數(shù)對(duì)應(yīng)的二進(jìn)制位相異時(shí),結(jié)果為1。參與運(yùn)算數(shù)仍以補(bǔ)碼出現(xiàn)。例如,3^4的計(jì)算方法如下(假設(shè)以一個(gè)字節(jié)存儲(chǔ)一個(gè)整數(shù))。00000011^0000010000000111由此得3^4=7。異或運(yùn)算符可以用來將一個(gè)數(shù)據(jù)的某些特定位取反3.5.5位運(yùn)算符與位運(yùn)算表達(dá)式6.按位或運(yùn)算符按位或運(yùn)算符“|”是雙目運(yùn)算符。其功能是參與運(yùn)算的兩個(gè)數(shù)各對(duì)應(yīng)的二進(jìn)制位相或。運(yùn)算法則是只要對(duì)應(yīng)的兩個(gè)二進(jìn)制位有一個(gè)為1時(shí),結(jié)果位就為1。參與運(yùn)算的兩個(gè)數(shù)均以補(bǔ)碼出現(xiàn)。例如,3|4(假設(shè)以一個(gè)字節(jié)存儲(chǔ)一個(gè)整數(shù))。00000011|0000010000000111由此得3|4=7。按位或運(yùn)算可以將一個(gè)數(shù)的某些制定的位設(shè)置為13.6類型轉(zhuǎn)換在實(shí)際計(jì)算中,所有操作數(shù)的數(shù)據(jù)類型都一樣么?比如:S=3.14*5*5;結(jié)果應(yīng)該是什么類型呢?引題3.6類型轉(zhuǎn)換隱含類型轉(zhuǎn)換在運(yùn)算中類型轉(zhuǎn)換由計(jì)算機(jī)自動(dòng)完成,所以也被稱為自動(dòng)類型轉(zhuǎn)換。強(qiáng)制類型轉(zhuǎn)換通過類型轉(zhuǎn)換運(yùn)算來實(shí)現(xiàn)。分類3.6.1隱含類型轉(zhuǎn)換類型級(jí)別從高到低的順序是longdouble、double、float、unsignedlonglong、longlong、unsignedlong、long、unsignedint和int。轉(zhuǎn)換按數(shù)據(jù)長度增加的方向進(jìn)行,以保證精度不降低。在包含兩種類型的任何運(yùn)算里,兩個(gè)值都轉(zhuǎn)換成兩種類型里較高級(jí)別。有符號(hào)和無符號(hào)的char和short類型都將自動(dòng)轉(zhuǎn)換為int。在賦值語句中,計(jì)算的最后結(jié)果被轉(zhuǎn)換成將要被賦值的那個(gè)變量的類型。當(dāng)作為函數(shù)的參數(shù)被傳遞時(shí),char和short會(huì)被轉(zhuǎn)換為int,float會(huì)被轉(zhuǎn)換為double。轉(zhuǎn)換規(guī)則3.6.1隱含類型轉(zhuǎn)換轉(zhuǎn)換規(guī)則精度低精度高字節(jié)數(shù)少字節(jié)數(shù)多小類型大類型范圍小范圍大例:inti=10;long

溫馨提示

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

最新文檔

評(píng)論

0/150

提交評(píng)論