數(shù)據(jù)類(lèi)型運(yùn)算符與表達(dá)式課件_第1頁(yè)
數(shù)據(jù)類(lèi)型運(yùn)算符與表達(dá)式課件_第2頁(yè)
數(shù)據(jù)類(lèi)型運(yùn)算符與表達(dá)式課件_第3頁(yè)
數(shù)據(jù)類(lèi)型運(yùn)算符與表達(dá)式課件_第4頁(yè)
數(shù)據(jù)類(lèi)型運(yùn)算符與表達(dá)式課件_第5頁(yè)
已閱讀5頁(yè),還剩71頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

第3章數(shù)據(jù)類(lèi)型、運(yùn)算符與表達(dá)式3.1C語(yǔ)言的數(shù)據(jù)類(lèi)型

3.2常量和變量

3.3整型數(shù)據(jù)

3.4實(shí)型數(shù)據(jù)

3.5字符型數(shù)據(jù)

3.6算術(shù)運(yùn)算與算術(shù)表達(dá)式

3.7賦值運(yùn)算與賦值表達(dá)式

3.8C語(yǔ)言特有的運(yùn)算和運(yùn)算符2022/12/141計(jì)算機(jī)程序設(shè)計(jì)-第三章數(shù)據(jù)類(lèi)型、運(yùn)算符與表達(dá)式第3章數(shù)據(jù)類(lèi)型、運(yùn)算符與表達(dá)式3.1C語(yǔ)言的數(shù)據(jù)3.1C語(yǔ)言的數(shù)據(jù)類(lèi)型一個(gè)算法應(yīng)包括對(duì)數(shù)據(jù)的描述和對(duì)數(shù)據(jù)處理的描述。C語(yǔ)言提供的數(shù)據(jù)結(jié)構(gòu),是以數(shù)據(jù)類(lèi)型形式出現(xiàn)的。具體分類(lèi)如下:1.基本類(lèi)型分為整型、實(shí)型(又稱(chēng)浮點(diǎn)型)、字符型和枚舉型四種。2.構(gòu)造類(lèi)型分為數(shù)組類(lèi)型、結(jié)構(gòu)體類(lèi)型和共用體類(lèi)型三種。3.指針類(lèi)型。在第9章中介紹。4.空類(lèi)型C語(yǔ)言中的數(shù)據(jù),有常量和變量之分,它們分別屬于上述這些類(lèi)型。本章將介紹基本類(lèi)型中的整型、實(shí)型和字符型三種數(shù)據(jù)。2022/12/142計(jì)算機(jī)程序設(shè)計(jì)-第三章數(shù)據(jù)類(lèi)型、運(yùn)算符與表達(dá)式3.1C語(yǔ)言的數(shù)據(jù)類(lèi)型一個(gè)算法應(yīng)包括對(duì)數(shù)據(jù)的描述和對(duì)數(shù)3.2常量和變量2.常量的分類(lèi)

(1)字面常量字面常量的類(lèi)型,可通過(guò)書(shū)寫(xiě)形式來(lái)判別。(2)符號(hào)常量#define符號(hào)常量名常量符號(hào)常量的優(yōu)點(diǎn):1.含義清楚;2.一改全改2.3.2變量1.變量的概念在程序運(yùn)行過(guò)程中,其值可以被改變的量稱(chēng)為變量。2022/12/143計(jì)算機(jī)程序設(shè)計(jì)-第三章數(shù)據(jù)類(lèi)型、運(yùn)算符與表達(dá)式3.2.1常量1.常量的概念

在程序運(yùn)行過(guò)程中,其值不能被改變的量稱(chēng)為常量。

3.2常量和變量2.常量的分類(lèi)

(1)字面常2.變量的兩個(gè)要素(1)變量名。每個(gè)變量都必須有一個(gè)名字──變量名,變量命名遵循標(biāo)識(shí)符命名規(guī)則。變量名實(shí)際上代表的是一個(gè)符號(hào)地址。通常用小寫(xiě)。(2)變量值。在程序運(yùn)行過(guò)程中,變量值存儲(chǔ)在內(nèi)存中。在程序中,通過(guò)變量名找到相應(yīng)的內(nèi)存存儲(chǔ)單元來(lái)引用變量的值。注意:變量和符號(hào)常量的本質(zhì)區(qū)別。2022/12/144計(jì)算機(jī)程序設(shè)計(jì)-第三章數(shù)據(jù)類(lèi)型、運(yùn)算符與表達(dá)式2.變量的兩個(gè)要素2022/12/124計(jì)算機(jī)程序設(shè)計(jì)-第三3.標(biāo)識(shí)符的命名規(guī)則(1)有效字符:只能由字母、數(shù)字和下劃線(xiàn)組成,且以字母或下劃線(xiàn)開(kāi)頭。(2)有效長(zhǎng)度:隨系統(tǒng)而異,但至少前8?jìng)€(gè)字符有效。如果超長(zhǎng),則超長(zhǎng)部分被舍棄。如student_name和student_number的前8?jìng)€(gè)字符相同,有的系統(tǒng)認(rèn)為這兩個(gè)變量是一回事而不加區(qū)別。(3)關(guān)鍵字是由C語(yǔ)言規(guī)定的具有特定意義的字符串。用戶(hù)定義的標(biāo)識(shí)符不應(yīng)與關(guān)鍵字相同。2022/12/145計(jì)算機(jī)程序設(shè)計(jì)-第三章數(shù)據(jù)類(lèi)型、運(yùn)算符與表達(dá)式3.標(biāo)識(shí)符的命名規(guī)則2022/12/125計(jì)算機(jī)程序設(shè)計(jì)-第注意:C語(yǔ)言對(duì)英文字母的大小敏感,即同一字母的大小寫(xiě),被認(rèn)為是兩個(gè)不同的字符。在C語(yǔ)言中,變量名total與變量名TOTAL、ToTaL、tOtAl等是不同的變量。標(biāo)識(shí)符命名的良好習(xí)慣──見(jiàn)名知意:所謂“見(jiàn)名知意”是指,通過(guò)變量名就知道變量值的含義。通常應(yīng)選擇能表示數(shù)據(jù)含義的英文單詞(或縮寫(xiě))作變量名,或漢語(yǔ)拼音字頭作變量名。例如,name/xm(姓名)、sex/xb(性別)、age/nl(年齡)、salary/gz(工資)。2022/12/146計(jì)算機(jī)程序設(shè)計(jì)-第三章數(shù)據(jù)類(lèi)型、運(yùn)算符與表達(dá)式注意:C語(yǔ)言對(duì)英文字母的大小敏感,即同一字母的大小寫(xiě),被認(rèn)為4.變量的定義與初始化在C語(yǔ)言中,要求對(duì)所有用到的變量,必須先定義、后使用(1.編譯時(shí)分配存儲(chǔ)單元的依據(jù),2.不同類(lèi)的變量所允許的操作集也不同);稱(chēng)在定義變量的同時(shí)進(jìn)行賦初值的操作稱(chēng)為變量的初始化。(1)變量定義的一般格式

[存儲(chǔ)類(lèi)型]數(shù)據(jù)類(lèi)型變量名[,變量名2……];例如,floatradius,length,area;

(2)變量初始化的一般格式[存儲(chǔ)類(lèi)型]數(shù)據(jù)類(lèi)型變量名[=初值][,變量名2[=初值2]……];例如,floatradius=2.5,length,area;2022/12/147計(jì)算機(jī)程序設(shè)計(jì)-第三章數(shù)據(jù)類(lèi)型、運(yùn)算符與表達(dá)式4.變量的定義與初始化2022/12/127計(jì)算機(jī)程序設(shè)計(jì)-3.3整型數(shù)據(jù)3.3.0補(bǔ)碼正數(shù)采用符號(hào)-絕對(duì)值表示負(fù)數(shù)X用來(lái)表示,其中n為機(jī)器的字長(zhǎng)簡(jiǎn)單的寫(xiě)出一個(gè)負(fù)數(shù)的補(bǔ)碼的方法:(1)寫(xiě)出與該負(fù)數(shù)相對(duì)應(yīng)的正數(shù)的補(bǔ)碼(2)按位求反(3)末位加1用補(bǔ)碼表示數(shù)時(shí)的符號(hào)擴(kuò)展補(bǔ)碼進(jìn)行加減法運(yùn)算時(shí),只要符號(hào)位參加運(yùn)算能自動(dòng)地得到正確結(jié)果。

2022/12/148計(jì)算機(jī)程序設(shè)計(jì)-第三章數(shù)據(jù)類(lèi)型、運(yùn)算符與表達(dá)式3.3整型數(shù)據(jù)3.3.0補(bǔ)碼2022/12/1283.3整型數(shù)據(jù)3.3.1整型變量

1.分類(lèi)

根據(jù)占用內(nèi)存字節(jié)數(shù)的不同,整型變量又分為4類(lèi):(1)基本整型(類(lèi)型關(guān)鍵字為int)。(2)短整型(類(lèi)型關(guān)鍵字為short[int])。(3)長(zhǎng)整型(類(lèi)型關(guān)鍵字為long[int])。(4)無(wú)符號(hào)整型。無(wú)符號(hào)型又分為無(wú)符號(hào)基本整型(unsigned[int])、無(wú)符號(hào)短整型(unsignedshort)和無(wú)符號(hào)長(zhǎng)整型(unsignedlong)三種,只能用來(lái)存儲(chǔ)無(wú)符號(hào)整數(shù)。2022/12/149計(jì)算機(jī)程序設(shè)計(jì)-第三章數(shù)據(jù)類(lèi)型、運(yùn)算符與表達(dá)式3.3整型數(shù)據(jù)3.3.1整型變量

12.占用內(nèi)存字節(jié)數(shù)與值域

上述各類(lèi)型整型變量占用的內(nèi)存字節(jié)數(shù),隨系統(tǒng)而異。在16位操作系統(tǒng)中,一般用2字節(jié)表示一個(gè)int型變量,且long型(4字節(jié))≥int型(2字節(jié))≥short型(2字節(jié))。

顯然,不同類(lèi)型的整型變量,其值域不同。占用內(nèi)存字節(jié)數(shù)為n的(有符號(hào))整型變量,其值域?yàn)椋?2n*8-1~(2n*8-1-1);無(wú)符號(hào)整型變量的值域?yàn)椋?~(2n*8-1)。

2022/12/1410計(jì)算機(jī)程序設(shè)計(jì)-第三章數(shù)據(jù)類(lèi)型、運(yùn)算符與表達(dá)式2.占用內(nèi)存字節(jié)數(shù)與值域

2022/12/1例如,PC機(jī)中的一個(gè)int型變量,其值域?yàn)?22*8-1~(22*8-1-1),即-32768~32767;一個(gè)unsigned型變量的值域?yàn)椋?~(22*8-1),即0~65535。

3.3.2整型常量1.三種表示形式整型常量即整常數(shù),在C語(yǔ)言中可用三種形式表示:(1)十進(jìn)制。例如10、36。(2)八進(jìn)制(以數(shù)字0開(kāi)頭)。例如012。(3)十六進(jìn)制(以數(shù)字0+小寫(xiě)字母x開(kāi)頭)。例如

0x36。2022/12/1411計(jì)算機(jī)程序設(shè)計(jì)-第三章數(shù)據(jù)類(lèi)型、運(yùn)算符與表達(dá)式例如,PC機(jī)中的一個(gè)int型變量,其值域?yàn)?22*8-1~(2.分類(lèi)(1)基本整型。在16位機(jī)中,用2字節(jié)存儲(chǔ),其數(shù)據(jù)范圍與int型變量一樣。(2)長(zhǎng)整型(在數(shù)值后面加“L(l)”)例如,123l、315L等。(3)無(wú)符號(hào)型(在數(shù)值后面加“U(u)”)例如,123u、315U等。3.類(lèi)型匹配規(guī)則類(lèi)型匹配規(guī)則為:一個(gè)整型常量,可以賦給能容納下其值的整型變量。例如,其值在-215--(215-1)的整型常量,可以賦給int型變量和longint型變量;其值在-231--(231-1)的整型常量,就只能賦給longint型變量。

2022/12/1412計(jì)算機(jī)程序設(shè)計(jì)-第三章數(shù)據(jù)類(lèi)型、運(yùn)算符與表達(dá)式2.分類(lèi)2022/12/1212計(jì)算機(jī)程序設(shè)計(jì)-第三章數(shù)據(jù)3.4實(shí)型數(shù)據(jù)

(1)十進(jìn)制形式。例如3.14、9.8。(2)指數(shù)形式:<尾數(shù)>E(e)<整型指數(shù)>。例如3.0E+5等。規(guī)范化指數(shù)形式。

3.4.2實(shí)型變量

C語(yǔ)言的實(shí)型變量,分為兩種:

2022/12/1413計(jì)算機(jī)程序設(shè)計(jì)-第三章數(shù)據(jù)類(lèi)型、運(yùn)算符與表達(dá)式3.4.1實(shí)型常量

1.表示形式

實(shí)型常量即實(shí)數(shù),在C語(yǔ)言中又稱(chēng)浮點(diǎn)數(shù),其值有兩種表達(dá)形式:(1)單精度型。類(lèi)型關(guān)鍵字為float,一般占4字節(jié)(32位)、提供7位有效數(shù)字。

(2)雙精度型。類(lèi)型關(guān)鍵字為double,一般占8?jìng)€(gè)字節(jié)、提供15~16位有效數(shù)字。

3.4實(shí)型數(shù)據(jù)

(1)十進(jìn)制形式。例如3.143.4.3實(shí)型數(shù)據(jù)在內(nèi)存中的存放形式如單精度數(shù)占四個(gè)字節(jié),分別用來(lái)存儲(chǔ)尾數(shù)與指數(shù)部分,尾數(shù)部分占的位數(shù)越多,精度越高,指數(shù)部分占的位數(shù)越多,則表示數(shù)的范圍越大。3.4.4實(shí)型數(shù)據(jù)有限的精度帶來(lái)的誤差如1.0/3*3在數(shù)學(xué)上結(jié)果等于1

而用C程序運(yùn)算的結(jié)果則不等于1。實(shí)際編程時(shí)假如用1.0/3*3==1來(lái)作為條件判斷或選擇控制就會(huì)出問(wèn)題解決方法:可以用fabs(1.0/3*3-1)<=1e-6來(lái)代替2022/12/1414計(jì)算機(jī)程序設(shè)計(jì)-第三章數(shù)據(jù)類(lèi)型、運(yùn)算符與表達(dá)式3.4.3實(shí)型數(shù)據(jù)在內(nèi)存中的存放形式2022/12/12143.5字符型數(shù)據(jù)3.5.1字符常量1.字符常量的定義用一對(duì)單引號(hào)括起來(lái)的單個(gè)字符,稱(chēng)為字符常量。例如,‘A’、‘1’、‘+’等。2.轉(zhuǎn)義字符(P67)C語(yǔ)言還允許使用一種特殊形式的字符常量,就是以反斜杠“\”開(kāi)頭的轉(zhuǎn)義字符。

注意:如果反斜杠或單、雙引號(hào)本身作為字符常量,必須使用轉(zhuǎn)義字符:‘\\’、‘\’’、‘\”’。2022/12/1415計(jì)算機(jī)程序設(shè)計(jì)-第三章數(shù)據(jù)類(lèi)型、運(yùn)算符與表達(dá)式3.5字符型數(shù)據(jù)3.5.1字符常量2022/12/1OK!

§?

3.5.2字符變量字符變量的類(lèi)型關(guān)鍵字為char,一般占用1字節(jié)內(nèi)存單元。1.變量值的存儲(chǔ)

字符變量用來(lái)存儲(chǔ)字符常量。將一個(gè)字符常量存儲(chǔ)到一個(gè)字符變量中,實(shí)際上是將該字符的ASCII碼值(無(wú)符號(hào)整數(shù))存儲(chǔ)到內(nèi)存單元中。2022/12/1416計(jì)算機(jī)程序設(shè)計(jì)-第三章數(shù)據(jù)類(lèi)型、運(yùn)算符與表達(dá)式[例3.1]main()

{printf(“\x4F\x4B\x21\n”); /*等價(jià)于printf(“OK!\n”);*/

printf(“\x15\xAB\n”);

}程序運(yùn)行結(jié)果如下:OK!

§?例如,charch1,ch2; /*定義兩個(gè)字符變量:ch1,ch2*/ch1=’a’;ch2=’b’;/*給字符變量賦值*/附:ASCII碼:美國(guó)(國(guó)家)信息交換標(biāo)準(zhǔn)(代)碼,給256個(gè)字符(包括字母、數(shù)字、標(biāo)點(diǎn)符號(hào)、控制字符及其他符號(hào))分配數(shù)值,用于在不同計(jì)算機(jī)硬件和軟件系統(tǒng)中實(shí)現(xiàn)數(shù)據(jù)傳輸標(biāo)準(zhǔn)化,在大多數(shù)的小型機(jī)和全部的個(gè)人計(jì)算機(jī)都使用此碼。2022/12/1417計(jì)算機(jī)程序設(shè)計(jì)-第三章數(shù)據(jù)類(lèi)型、運(yùn)算符與表達(dá)式例如,2022/12/1217計(jì)算機(jī)程序設(shè)計(jì)-第三章數(shù)據(jù)類(lèi)2.特性字符數(shù)據(jù)在內(nèi)存中存儲(chǔ)的是字符的ASCII碼──一個(gè)無(wú)符號(hào)整數(shù),其形式與整數(shù)的存儲(chǔ)形式一樣,所以C語(yǔ)言允許字符型數(shù)據(jù)與整型數(shù)據(jù)之間通用。(1)一個(gè)字符型數(shù)據(jù),既可以字符形式輸出,也可以整數(shù)形式輸出。

[例3.2]字符變量的字符形式輸出和整數(shù)形式輸出。

/*程序功能:用字符形式和整數(shù)形式輸出字符變量*/

2022/12/1418計(jì)算機(jī)程序設(shè)計(jì)-第三章數(shù)據(jù)類(lèi)型、運(yùn)算符與表達(dá)式main()

{charch1,ch2;

ch1='a';ch2='b';printf(“ch1=%c,ch2=%c\n”,ch1,ch2);

printf(“ch1=%d,ch2=%d\n”,ch1,ch2);

}

2.特性2022/12/1218計(jì)算機(jī)程序設(shè)計(jì)-第三章數(shù)據(jù)程序運(yùn)行結(jié)果:

ch1=a,ch2=b

ch1=97,ch2=98(2)允許對(duì)字符數(shù)據(jù)進(jìn)行算術(shù)運(yùn)算,此時(shí)就是對(duì)它們的ASCII碼值進(jìn)行算術(shù)運(yùn)算。2022/12/1419計(jì)算機(jī)程序設(shè)計(jì)-第三章數(shù)據(jù)類(lèi)型、運(yùn)算符與表達(dá)式程序運(yùn)行結(jié)果:

ch1=a,ch2=b

main()

{charch1,ch2;

ch1=‘a(chǎn)’;ch2=‘B’;

/*字母的大小寫(xiě)轉(zhuǎn)換*/

printf(“ch1=%c,ch2=%c\n”,ch1-32,ch2+32);

/*用字符形式輸出一個(gè)大于256的數(shù)值*/

printf("ch1+200=%d\n",ch1+200);

printf("ch1+200=%c\n",ch1+200);

printf("ch1+256=%d\n",ch1+256);

printf("ch1+256=%c\n",ch1+256);

}思考:用字符形式輸出一個(gè)大于256的數(shù)值,會(huì)得到什么結(jié)果?2022/12/1420計(jì)算機(jī)程序設(shè)計(jì)-第三章數(shù)據(jù)類(lèi)型、運(yùn)算符與表達(dá)式[例3.3]字符數(shù)據(jù)的算術(shù)運(yùn)算。

/*程序功能:字符數(shù)據(jù)的算術(shù)運(yùn)算*/

main()

{charch1,c程序運(yùn)行結(jié)果:ch1=A,ch2=bch1+200=297ch1+200=)ch1+256=353ch1+256=a 3.5.3字符串常量1.字符串常量的概念和字符串長(zhǎng)度字符串常量是用一對(duì)雙引號(hào)括起來(lái)的若干字符序列。字符串中字符的個(gè)數(shù)稱(chēng)為字符串長(zhǎng)度。長(zhǎng)度為0的字符串(即一個(gè)字符都沒(méi)有的字符串)稱(chēng)為空串,表示為“”(一對(duì)緊連的雙引號(hào))。2022/12/1421計(jì)算機(jī)程序設(shè)計(jì)-第三章數(shù)據(jù)類(lèi)型、運(yùn)算符與表達(dá)式程序運(yùn)行結(jié)果:2022/12/1221計(jì)算機(jī)程序設(shè)計(jì)-第三章例如,“Howdoyoudo.”、“Goodmorning.”等,都是字符串常量,其長(zhǎng)度分別為14和13(空格也是一個(gè)字符)。

如果反斜杠和雙引號(hào)作為字符串中的有效字符,則必須使用轉(zhuǎn)義字符。例如:(1)C:\msdos\v6.22→"C:\\msdos\\v6.22"

(2)Isay:"Goodbye!"→"Isay:\"Goodbye!\""2.字符串的存儲(chǔ)C語(yǔ)言規(guī)定:在存儲(chǔ)字符串常量時(shí),由系統(tǒng)在字符串的末尾自動(dòng)加一個(gè)‘\0’作為字符串的結(jié)束標(biāo)志。注意:在源程序中書(shū)寫(xiě)字符串常量時(shí),不必加結(jié)束字符‘\0’,否則畫(huà)蛇添足。

2022/12/1422計(jì)算機(jī)程序設(shè)計(jì)-第三章數(shù)據(jù)類(lèi)型、運(yùn)算符與表達(dá)式例如,“Howdoyoudo.”、“Goodmorn如果有一個(gè)字符串為“CHINA”,則它在內(nèi)存中的實(shí)際存儲(chǔ)如下所示:最后一個(gè)字符'\0'是系統(tǒng)自動(dòng)加上的,它占用6字節(jié)而非5字節(jié)內(nèi)存空間。綜上所述,字符常量'A'與字符串常量"A"是兩回事:(1)定界符不同:字符常量使用單引號(hào),而字符串常量使用雙引號(hào);(2)長(zhǎng)度不同:字符常量的長(zhǎng)度固定為1,而字符串常量的長(zhǎng)度,可以是0,也可以是某個(gè)整數(shù);(3)存儲(chǔ)要求不同:字符常量存儲(chǔ)的是字符的ASCII碼值,而字符串常量,除了要存儲(chǔ)有效的字符外,還要存儲(chǔ)一個(gè)結(jié)束標(biāo)志’\0’。CHINA\02022/12/1423計(jì)算機(jī)程序設(shè)計(jì)-第三章數(shù)據(jù)類(lèi)型、運(yùn)算符與表達(dá)式如果有一個(gè)字符串為“CHINA”,則它在內(nèi)存中的實(shí)際存儲(chǔ)如下3.6算術(shù)運(yùn)算與算術(shù)表達(dá)式在C語(yǔ)言中,除控制語(yǔ)句和輸入輸出函數(shù)外,其它所有基本操作都作為運(yùn)算符處理。

1.五種基本算術(shù)運(yùn)算符

+、-(減法/取負(fù))、*、/、%(求余數(shù))(1)關(guān)于除法運(yùn)算/C語(yǔ)言規(guī)定:兩個(gè)整數(shù)相除,其商為整數(shù),小數(shù)部分被舍棄。例如,5/2=2。

(2)關(guān)于求余數(shù)運(yùn)算%要求兩側(cè)的操作數(shù)均為整型數(shù)據(jù),否則出錯(cuò)。

2022/12/1424計(jì)算機(jī)程序設(shè)計(jì)-第三章數(shù)據(jù)類(lèi)型、運(yùn)算符與表達(dá)式3.6算術(shù)運(yùn)算與算術(shù)表達(dá)式在C語(yǔ)言中,除控制語(yǔ)句和輸入2.表達(dá)式和算術(shù)表達(dá)式(1)表達(dá)式的概念用運(yùn)算符和括號(hào)將運(yùn)算對(duì)象(常量、變量和函數(shù)等)連接起來(lái)的、符合C語(yǔ)言語(yǔ)法規(guī)則的式子,稱(chēng)為表達(dá)式。單個(gè)常量、變量或函數(shù),可以看作是表達(dá)式的一種特例。將單個(gè)常量、變量或函數(shù)構(gòu)成的表達(dá)式稱(chēng)為簡(jiǎn)單表達(dá)式,其它表達(dá)式稱(chēng)之為復(fù)雜表達(dá)式。2022/12/1425計(jì)算機(jī)程序設(shè)計(jì)-第三章數(shù)據(jù)類(lèi)型、運(yùn)算符與表達(dá)式2.表達(dá)式和算術(shù)表達(dá)式2022/12/1225計(jì)算機(jī)程序設(shè)計(jì)(2)算術(shù)表達(dá)式的概念表達(dá)式中的運(yùn)算符都是算術(shù)運(yùn)算符。例如,3+6*9、(x+y)/2-1等,都是算術(shù)表達(dá)式。良好的源程序書(shū)寫(xiě)習(xí)慣:在表達(dá)式中,在雙目運(yùn)算符的左右兩側(cè)各加一個(gè)空格,可增強(qiáng)程序的可讀性。請(qǐng)比較表達(dá)式“(x+y)/2–1”與“(x+y)/2–1”,您認(rèn)為哪個(gè)的可讀性更好一些?3.運(yùn)算符的優(yōu)先級(jí)與結(jié)合性(P70)(1)C語(yǔ)言規(guī)定了運(yùn)算符的優(yōu)先級(jí)和結(jié)合性。所謂結(jié)合性是指,當(dāng)一個(gè)操作數(shù)兩側(cè)的運(yùn)算符具有相同的優(yōu)先級(jí)時(shí),該操作數(shù)是先與左邊的運(yùn)算符結(jié)合,還是先與右邊的運(yùn)算符結(jié)合。2022/12/1426計(jì)算機(jī)程序設(shè)計(jì)-第三章數(shù)據(jù)類(lèi)型、運(yùn)算符與表達(dá)式(2)算術(shù)表達(dá)式的概念2022/12/1226計(jì)算機(jī)程序設(shè)計(jì)自左至右的結(jié)合方向,稱(chēng)為左結(jié)合性。反之,稱(chēng)為右結(jié)合性。結(jié)合性是C語(yǔ)言的獨(dú)有概念。除單目運(yùn)算符、賦值運(yùn)算符和條件運(yùn)算符是右結(jié)合性外,其它運(yùn)算符都是左結(jié)合性。(2)表達(dá)式求值1)按運(yùn)算符的優(yōu)先級(jí)高低次序執(zhí)行。例如,先乘除后加減。2)如果在一個(gè)運(yùn)算對(duì)象(或稱(chēng)操作數(shù))兩側(cè)的運(yùn)算符的優(yōu)先級(jí)相同,則按C語(yǔ)言規(guī)定的結(jié)合方向(結(jié)合性)進(jìn)行。2022/12/1427計(jì)算機(jī)程序設(shè)計(jì)-第三章數(shù)據(jù)類(lèi)型、運(yùn)算符與表達(dá)式自左至右的結(jié)合方向,稱(chēng)為左結(jié)合性。反之,稱(chēng)為右結(jié)合性。202例如,算術(shù)運(yùn)算符的結(jié)合方向是“自左至右”,即:在執(zhí)行“a–b+c”時(shí),變量b先與減號(hào)結(jié)合,執(zhí)行“a-b”;然后再執(zhí)行加c的運(yùn)算。4.數(shù)據(jù)類(lèi)型轉(zhuǎn)換(1)在C語(yǔ)言中,整型、實(shí)型和字符型數(shù)據(jù)間可以混合運(yùn)算(因?yàn)樽址麛?shù)據(jù)與整型數(shù)據(jù)可以通用)。如果一個(gè)運(yùn)算符兩側(cè)的操作數(shù)的數(shù)據(jù)類(lèi)型不同,則系統(tǒng)按“先轉(zhuǎn)換、后運(yùn)算”的原則,首先將數(shù)據(jù)自動(dòng)轉(zhuǎn)換成同一類(lèi)型,然后在同一類(lèi)型數(shù)據(jù)間進(jìn)行運(yùn)算。轉(zhuǎn)換規(guī)則如p91圖3-6所示。2022/12/1428計(jì)算機(jī)程序設(shè)計(jì)-第三章數(shù)據(jù)類(lèi)型、運(yùn)算符與表達(dá)式例如,算術(shù)運(yùn)算符的結(jié)合方向是“自左至右”,即:在執(zhí)行“a–1)橫向向左的箭頭,表示必須的轉(zhuǎn)換。char和short型必須轉(zhuǎn)換成int型,float型必須轉(zhuǎn)換成double型。2)縱向向上的箭頭,表示不同類(lèi)型的轉(zhuǎn)換方向。例如,int型與double型數(shù)據(jù)進(jìn)行混合運(yùn)算,則先將int型數(shù)據(jù)轉(zhuǎn)換成double型,然后在兩個(gè)同類(lèi)型的數(shù)據(jù)間進(jìn)行運(yùn)算,結(jié)果為double型。注意:箭頭方向只表示數(shù)據(jù)類(lèi)型由低向高轉(zhuǎn)換,不要理解為int型先轉(zhuǎn)換成unsigned型,再轉(zhuǎn)換成long型,最后轉(zhuǎn)換成double型。(2)除自動(dòng)轉(zhuǎn)換外,C語(yǔ)言也允許強(qiáng)制轉(zhuǎn)換。數(shù)據(jù)類(lèi)型強(qiáng)制轉(zhuǎn)換的一般格式為:

(要轉(zhuǎn)換成的數(shù)據(jù)類(lèi)型)(被轉(zhuǎn)換的表達(dá)式)2022/12/1429計(jì)算機(jī)程序設(shè)計(jì)-第三章數(shù)據(jù)類(lèi)型、運(yùn)算符與表達(dá)式1)橫向向左的箭頭,表示必須的轉(zhuǎn)換。char和short型

當(dāng)被轉(zhuǎn)換的表達(dá)式是一個(gè)簡(jiǎn)單表達(dá)式時(shí),外面的一對(duì)圓括號(hào)可以缺省。例如,(double)a(等價(jià)于(double)(a))/*將變量a的值轉(zhuǎn)換成double型*/(int)(x+y) /*將x+y的結(jié)果轉(zhuǎn)換成int型*/(float)5/2(等價(jià)于(float)(5)/2)/*將5轉(zhuǎn)換成實(shí)型,再除以2(=2.5)*/(float)(5/2) /*將5整除2的結(jié)果(2)轉(zhuǎn)換成實(shí)型(2.0)*/

注意:強(qiáng)制轉(zhuǎn)換類(lèi)型得到的是一個(gè)所需類(lèi)型的中間量,原表達(dá)式類(lèi)型并不發(fā)生變化。例如,(double)a只是將變量a的值轉(zhuǎn)換成一個(gè)double型的中間量,其數(shù)據(jù)類(lèi)型并未轉(zhuǎn)換成double型。2022/12/1430計(jì)算機(jī)程序設(shè)計(jì)-第三章數(shù)據(jù)類(lèi)型、運(yùn)算符與表達(dá)式當(dāng)被轉(zhuǎn)換的表達(dá)式是一個(gè)簡(jiǎn)單表達(dá)式時(shí),外面的一對(duì)圓括號(hào)可以3.7賦值運(yùn)算與賦值表達(dá)式

1.賦值運(yùn)算賦值符號(hào)“=”就是賦值運(yùn)算符,它的作用是將一個(gè)表達(dá)式的值賦給一個(gè)變量。賦值運(yùn)算符的一般形式為:變量=賦值表達(dá)式

例如,x=5

y=(float)5/2

如果表達(dá)式值的類(lèi)型,與被賦值變量的類(lèi)型不一致,但都是數(shù)值型或字符型時(shí),系統(tǒng)自動(dòng)地將表達(dá)式的值轉(zhuǎn)換成被賦值變量的數(shù)據(jù)類(lèi)型,然后再賦值給變量。

思考題:假設(shè)變量num的數(shù)據(jù)類(lèi)型為float,其值為2.5,則執(zhí)行“num=(int)num”后,num的值等于多少?2022/12/1431計(jì)算機(jī)程序設(shè)計(jì)-第三章數(shù)據(jù)類(lèi)型、運(yùn)算符與表達(dá)式3.7賦值運(yùn)算與賦值表達(dá)式1.賦值運(yùn)算2022/2.復(fù)合賦值運(yùn)算復(fù)合賦值運(yùn)算符是由賦值運(yùn)算符之前再加一個(gè)雙目運(yùn)算符構(gòu)成的。復(fù)合賦值運(yùn)算的一般格式為:變量雙目運(yùn)算符=表達(dá)式└──┬──┘復(fù)合賦值運(yùn)算符它等價(jià)于:變量=變量雙目運(yùn)算符(表達(dá)式)。當(dāng)表達(dá)式為簡(jiǎn)單表達(dá)式時(shí),表達(dá)式外的一對(duì)圓括號(hào)才可缺省,否則可能出錯(cuò)。例如,x+=3 /*等價(jià)于x=x+3*/y*=x+6/*等價(jià)于y=y*(x+6),而不是y=y*x+6*/2022/12/1432計(jì)算機(jī)程序設(shè)計(jì)-第三章數(shù)據(jù)類(lèi)型、運(yùn)算符與表達(dá)式2.復(fù)合賦值運(yùn)算2022/12/1232計(jì)算機(jī)程序設(shè)計(jì)-第三C語(yǔ)言規(guī)定的10種復(fù)合賦值運(yùn)算符如下:+=,-=,*=,/=,%=;/*復(fù)合算術(shù)運(yùn)算符(5個(gè))*/&=,^=,|=,<<=,>>=;/*復(fù)合位運(yùn)算符(5個(gè))*/3.賦值表達(dá)式由賦值運(yùn)算符或復(fù)合賦值運(yùn)算符,將一個(gè)變量和一個(gè)表達(dá)式連接起來(lái)的表達(dá)式,稱(chēng)為賦值表達(dá)式。(1)一般格式變量(復(fù)合)賦值運(yùn)算符表達(dá)式(2)賦值表達(dá)式的值任何一個(gè)表達(dá)式都有一個(gè)值,賦值表達(dá)式也不例外。被賦值變量的值,就是賦值表達(dá)式的值。例如,“a=5”這個(gè)賦值表達(dá)式,變量a的值“5”就是它的值。2022/12/1433計(jì)算機(jī)程序設(shè)計(jì)-第三章數(shù)據(jù)類(lèi)型、運(yùn)算符與表達(dá)式C語(yǔ)言規(guī)定的10種復(fù)合賦值運(yùn)算符如下:2022/12/1233.8C語(yǔ)言特有的運(yùn)算和運(yùn)算符

2.用法與運(yùn)算規(guī)則

2022/12/1434計(jì)算機(jī)程序設(shè)計(jì)-第三章數(shù)據(jù)類(lèi)型、運(yùn)算符與表達(dá)式3.8.1自增(++)、自減(--)運(yùn)算

自增、自減運(yùn)算符都有兩種用法:

(1)前置運(yùn)算──運(yùn)算符放在變量之前:++變量、--變量

先使變量的值增(或減)1,然后再以變化后的值參與其它運(yùn)算,即先增減、后運(yùn)算。

1.作用

自增運(yùn)算使單個(gè)變量的值增1,自減運(yùn)算使單個(gè)變量的值減1。(2)后置運(yùn)算─運(yùn)算符放在變量之后:變量++、變量--

變量先參與其它運(yùn)算,然后再使變量的值增(或減)1,即先運(yùn)算、后增減。

3.8C語(yǔ)言特有的運(yùn)算和運(yùn)算符2.用法與運(yùn)算規(guī)則

[例3.4]自增、自減運(yùn)算符的用法與運(yùn)算規(guī)則示例。/*程序功能:自增、自減運(yùn)算符的用法與運(yùn)算規(guī)則示例*/main(){intx=6,y;printf("x=%d\n",x); /*輸出x的初值*/y=++x; /*前置運(yùn)算*/printf("y=++x:x=%d,y=%d\n",x,y);y=x--; /*后置運(yùn)算*/printf("y=x--:x=%d,y=%d\n",x,y);}程序運(yùn)行結(jié)果:x=6y=++x:x=7,y=7y=x--:x=6,y=7 2022/12/1435計(jì)算機(jī)程序設(shè)計(jì)-第三章數(shù)據(jù)類(lèi)型、運(yùn)算符與表達(dá)式[例3.4]自增、自減運(yùn)算符的用法與運(yùn)算規(guī)則示例。202

思考題:如果將案例“y=++x;”語(yǔ)句中的前置運(yùn)算改為后置(y=x++;),“y=x--;”語(yǔ)句中的后置運(yùn)算改為前置(y=--x;),程序運(yùn)行結(jié)果會(huì)如何?3.說(shuō)明(1)自增、自減運(yùn)算,常用于循環(huán)語(yǔ)句中,使循環(huán)控制變量加(或減)1,以及指針變量中,使指針指向下(或上)一個(gè)地址。(2)自增、自減運(yùn)算符,不能用于常量和表達(dá)式。例如,5++、--(a+b)等都是非法的。(3)在表達(dá)式中,連續(xù)使同一變量進(jìn)行自增或自減運(yùn)算時(shí),很容易出錯(cuò),所以最好避免這種用法。2022/12/1436計(jì)算機(jī)程序設(shè)計(jì)-第三章數(shù)據(jù)類(lèi)型、運(yùn)算符與表達(dá)式思考題:如果將案例“y=++x;”語(yǔ)句中的前置運(yùn)算改為后置3.8.2逗號(hào)運(yùn)算(,)及其表達(dá)式C語(yǔ)言提供一種用逗號(hào)運(yùn)算符“,”連接起來(lái)的式子,稱(chēng)為逗號(hào)表達(dá)式。逗號(hào)運(yùn)算符又稱(chēng)順序求值運(yùn)算符。1.一般形式表達(dá)式1,表達(dá)式2,……,表達(dá)式n2.求解過(guò)程自左至右,依次計(jì)算各表達(dá)式的值,“表達(dá)式n”的值即為整個(gè)逗號(hào)表達(dá)式的值。例如,逗號(hào)表達(dá)式“a=3*5,a*4”的值=60:先求解a=3*5,得a=15;再求a*4=60,所以逗號(hào)表達(dá)式的值=60。2022/12/1437計(jì)算機(jī)程序設(shè)計(jì)-第三章數(shù)據(jù)類(lèi)型、運(yùn)算符與表達(dá)式3.8.2逗號(hào)運(yùn)算(,)及其表達(dá)式2022/12/123又例如,逗號(hào)表達(dá)式“(a=3*5,a*4),a+5”的值=20:先求解a=3*5,得a=15;再求a*4=60;最后求解a+5=20,所以逗號(hào)表達(dá)式的值=20。注意:并不是任何地方出現(xiàn)的逗號(hào),都是逗號(hào)運(yùn)算符。很多情況下,逗號(hào)僅用作分隔符。2022/12/1438計(jì)算機(jī)程序設(shè)計(jì)-第三章數(shù)據(jù)類(lèi)型、運(yùn)算符與表達(dá)式又例如,逗號(hào)表達(dá)式“(a=3*5,a*4),

第3章數(shù)據(jù)類(lèi)型、運(yùn)算符與表達(dá)式3.1C語(yǔ)言的數(shù)據(jù)類(lèi)型

3.2常量和變量

3.3整型數(shù)據(jù)

3.4實(shí)型數(shù)據(jù)

3.5字符型數(shù)據(jù)

3.6算術(shù)運(yùn)算與算術(shù)表達(dá)式

3.7賦值運(yùn)算與賦值表達(dá)式

3.8C語(yǔ)言特有的運(yùn)算和運(yùn)算符2022/12/1439計(jì)算機(jī)程序設(shè)計(jì)-第三章數(shù)據(jù)類(lèi)型、運(yùn)算符與表達(dá)式第3章數(shù)據(jù)類(lèi)型、運(yùn)算符與表達(dá)式3.1C語(yǔ)言的數(shù)據(jù)3.1C語(yǔ)言的數(shù)據(jù)類(lèi)型一個(gè)算法應(yīng)包括對(duì)數(shù)據(jù)的描述和對(duì)數(shù)據(jù)處理的描述。C語(yǔ)言提供的數(shù)據(jù)結(jié)構(gòu),是以數(shù)據(jù)類(lèi)型形式出現(xiàn)的。具體分類(lèi)如下:1.基本類(lèi)型分為整型、實(shí)型(又稱(chēng)浮點(diǎn)型)、字符型和枚舉型四種。2.構(gòu)造類(lèi)型分為數(shù)組類(lèi)型、結(jié)構(gòu)體類(lèi)型和共用體類(lèi)型三種。3.指針類(lèi)型。在第9章中介紹。4.空類(lèi)型C語(yǔ)言中的數(shù)據(jù),有常量和變量之分,它們分別屬于上述這些類(lèi)型。本章將介紹基本類(lèi)型中的整型、實(shí)型和字符型三種數(shù)據(jù)。2022/12/1440計(jì)算機(jī)程序設(shè)計(jì)-第三章數(shù)據(jù)類(lèi)型、運(yùn)算符與表達(dá)式3.1C語(yǔ)言的數(shù)據(jù)類(lèi)型一個(gè)算法應(yīng)包括對(duì)數(shù)據(jù)的描述和對(duì)數(shù)3.2常量和變量2.常量的分類(lèi)

(1)字面常量字面常量的類(lèi)型,可通過(guò)書(shū)寫(xiě)形式來(lái)判別。(2)符號(hào)常量#define符號(hào)常量名常量符號(hào)常量的優(yōu)點(diǎn):1.含義清楚;2.一改全改2.3.2變量1.變量的概念在程序運(yùn)行過(guò)程中,其值可以被改變的量稱(chēng)為變量。2022/12/1441計(jì)算機(jī)程序設(shè)計(jì)-第三章數(shù)據(jù)類(lèi)型、運(yùn)算符與表達(dá)式3.2.1常量1.常量的概念

在程序運(yùn)行過(guò)程中,其值不能被改變的量稱(chēng)為常量。

3.2常量和變量2.常量的分類(lèi)

(1)字面常2.變量的兩個(gè)要素(1)變量名。每個(gè)變量都必須有一個(gè)名字──變量名,變量命名遵循標(biāo)識(shí)符命名規(guī)則。變量名實(shí)際上代表的是一個(gè)符號(hào)地址。通常用小寫(xiě)。(2)變量值。在程序運(yùn)行過(guò)程中,變量值存儲(chǔ)在內(nèi)存中。在程序中,通過(guò)變量名找到相應(yīng)的內(nèi)存存儲(chǔ)單元來(lái)引用變量的值。注意:變量和符號(hào)常量的本質(zhì)區(qū)別。2022/12/1442計(jì)算機(jī)程序設(shè)計(jì)-第三章數(shù)據(jù)類(lèi)型、運(yùn)算符與表達(dá)式2.變量的兩個(gè)要素2022/12/124計(jì)算機(jī)程序設(shè)計(jì)-第三3.標(biāo)識(shí)符的命名規(guī)則(1)有效字符:只能由字母、數(shù)字和下劃線(xiàn)組成,且以字母或下劃線(xiàn)開(kāi)頭。(2)有效長(zhǎng)度:隨系統(tǒng)而異,但至少前8?jìng)€(gè)字符有效。如果超長(zhǎng),則超長(zhǎng)部分被舍棄。如student_name和student_number的前8?jìng)€(gè)字符相同,有的系統(tǒng)認(rèn)為這兩個(gè)變量是一回事而不加區(qū)別。(3)關(guān)鍵字是由C語(yǔ)言規(guī)定的具有特定意義的字符串。用戶(hù)定義的標(biāo)識(shí)符不應(yīng)與關(guān)鍵字相同。2022/12/1443計(jì)算機(jī)程序設(shè)計(jì)-第三章數(shù)據(jù)類(lèi)型、運(yùn)算符與表達(dá)式3.標(biāo)識(shí)符的命名規(guī)則2022/12/125計(jì)算機(jī)程序設(shè)計(jì)-第注意:C語(yǔ)言對(duì)英文字母的大小敏感,即同一字母的大小寫(xiě),被認(rèn)為是兩個(gè)不同的字符。在C語(yǔ)言中,變量名total與變量名TOTAL、ToTaL、tOtAl等是不同的變量。標(biāo)識(shí)符命名的良好習(xí)慣──見(jiàn)名知意:所謂“見(jiàn)名知意”是指,通過(guò)變量名就知道變量值的含義。通常應(yīng)選擇能表示數(shù)據(jù)含義的英文單詞(或縮寫(xiě))作變量名,或漢語(yǔ)拼音字頭作變量名。例如,name/xm(姓名)、sex/xb(性別)、age/nl(年齡)、salary/gz(工資)。2022/12/1444計(jì)算機(jī)程序設(shè)計(jì)-第三章數(shù)據(jù)類(lèi)型、運(yùn)算符與表達(dá)式注意:C語(yǔ)言對(duì)英文字母的大小敏感,即同一字母的大小寫(xiě),被認(rèn)為4.變量的定義與初始化在C語(yǔ)言中,要求對(duì)所有用到的變量,必須先定義、后使用(1.編譯時(shí)分配存儲(chǔ)單元的依據(jù),2.不同類(lèi)的變量所允許的操作集也不同);稱(chēng)在定義變量的同時(shí)進(jìn)行賦初值的操作稱(chēng)為變量的初始化。(1)變量定義的一般格式

[存儲(chǔ)類(lèi)型]數(shù)據(jù)類(lèi)型變量名[,變量名2……];例如,floatradius,length,area;

(2)變量初始化的一般格式[存儲(chǔ)類(lèi)型]數(shù)據(jù)類(lèi)型變量名[=初值][,變量名2[=初值2]……];例如,floatradius=2.5,length,area;2022/12/1445計(jì)算機(jī)程序設(shè)計(jì)-第三章數(shù)據(jù)類(lèi)型、運(yùn)算符與表達(dá)式4.變量的定義與初始化2022/12/127計(jì)算機(jī)程序設(shè)計(jì)-3.3整型數(shù)據(jù)3.3.0補(bǔ)碼正數(shù)采用符號(hào)-絕對(duì)值表示負(fù)數(shù)X用來(lái)表示,其中n為機(jī)器的字長(zhǎng)簡(jiǎn)單的寫(xiě)出一個(gè)負(fù)數(shù)的補(bǔ)碼的方法:(1)寫(xiě)出與該負(fù)數(shù)相對(duì)應(yīng)的正數(shù)的補(bǔ)碼(2)按位求反(3)末位加1用補(bǔ)碼表示數(shù)時(shí)的符號(hào)擴(kuò)展補(bǔ)碼進(jìn)行加減法運(yùn)算時(shí),只要符號(hào)位參加運(yùn)算能自動(dòng)地得到正確結(jié)果。

2022/12/1446計(jì)算機(jī)程序設(shè)計(jì)-第三章數(shù)據(jù)類(lèi)型、運(yùn)算符與表達(dá)式3.3整型數(shù)據(jù)3.3.0補(bǔ)碼2022/12/1283.3整型數(shù)據(jù)3.3.1整型變量

1.分類(lèi)

根據(jù)占用內(nèi)存字節(jié)數(shù)的不同,整型變量又分為4類(lèi):(1)基本整型(類(lèi)型關(guān)鍵字為int)。(2)短整型(類(lèi)型關(guān)鍵字為short[int])。(3)長(zhǎng)整型(類(lèi)型關(guān)鍵字為long[int])。(4)無(wú)符號(hào)整型。無(wú)符號(hào)型又分為無(wú)符號(hào)基本整型(unsigned[int])、無(wú)符號(hào)短整型(unsignedshort)和無(wú)符號(hào)長(zhǎng)整型(unsignedlong)三種,只能用來(lái)存儲(chǔ)無(wú)符號(hào)整數(shù)。2022/12/1447計(jì)算機(jī)程序設(shè)計(jì)-第三章數(shù)據(jù)類(lèi)型、運(yùn)算符與表達(dá)式3.3整型數(shù)據(jù)3.3.1整型變量

12.占用內(nèi)存字節(jié)數(shù)與值域

上述各類(lèi)型整型變量占用的內(nèi)存字節(jié)數(shù),隨系統(tǒng)而異。在16位操作系統(tǒng)中,一般用2字節(jié)表示一個(gè)int型變量,且long型(4字節(jié))≥int型(2字節(jié))≥short型(2字節(jié))。

顯然,不同類(lèi)型的整型變量,其值域不同。占用內(nèi)存字節(jié)數(shù)為n的(有符號(hào))整型變量,其值域?yàn)椋?2n*8-1~(2n*8-1-1);無(wú)符號(hào)整型變量的值域?yàn)椋?~(2n*8-1)。

2022/12/1448計(jì)算機(jī)程序設(shè)計(jì)-第三章數(shù)據(jù)類(lèi)型、運(yùn)算符與表達(dá)式2.占用內(nèi)存字節(jié)數(shù)與值域

2022/12/1例如,PC機(jī)中的一個(gè)int型變量,其值域?yàn)?22*8-1~(22*8-1-1),即-32768~32767;一個(gè)unsigned型變量的值域?yàn)椋?~(22*8-1),即0~65535。

3.3.2整型常量1.三種表示形式整型常量即整常數(shù),在C語(yǔ)言中可用三種形式表示:(1)十進(jìn)制。例如10、36。(2)八進(jìn)制(以數(shù)字0開(kāi)頭)。例如012。(3)十六進(jìn)制(以數(shù)字0+小寫(xiě)字母x開(kāi)頭)。例如

0x36。2022/12/1449計(jì)算機(jī)程序設(shè)計(jì)-第三章數(shù)據(jù)類(lèi)型、運(yùn)算符與表達(dá)式例如,PC機(jī)中的一個(gè)int型變量,其值域?yàn)?22*8-1~(2.分類(lèi)(1)基本整型。在16位機(jī)中,用2字節(jié)存儲(chǔ),其數(shù)據(jù)范圍與int型變量一樣。(2)長(zhǎng)整型(在數(shù)值后面加“L(l)”)例如,123l、315L等。(3)無(wú)符號(hào)型(在數(shù)值后面加“U(u)”)例如,123u、315U等。3.類(lèi)型匹配規(guī)則類(lèi)型匹配規(guī)則為:一個(gè)整型常量,可以賦給能容納下其值的整型變量。例如,其值在-215--(215-1)的整型常量,可以賦給int型變量和longint型變量;其值在-231--(231-1)的整型常量,就只能賦給longint型變量。

2022/12/1450計(jì)算機(jī)程序設(shè)計(jì)-第三章數(shù)據(jù)類(lèi)型、運(yùn)算符與表達(dá)式2.分類(lèi)2022/12/1212計(jì)算機(jī)程序設(shè)計(jì)-第三章數(shù)據(jù)3.4實(shí)型數(shù)據(jù)

(1)十進(jìn)制形式。例如3.14、9.8。(2)指數(shù)形式:<尾數(shù)>E(e)<整型指數(shù)>。例如3.0E+5等。規(guī)范化指數(shù)形式。

3.4.2實(shí)型變量

C語(yǔ)言的實(shí)型變量,分為兩種:

2022/12/1451計(jì)算機(jī)程序設(shè)計(jì)-第三章數(shù)據(jù)類(lèi)型、運(yùn)算符與表達(dá)式3.4.1實(shí)型常量

1.表示形式

實(shí)型常量即實(shí)數(shù),在C語(yǔ)言中又稱(chēng)浮點(diǎn)數(shù),其值有兩種表達(dá)形式:(1)單精度型。類(lèi)型關(guān)鍵字為float,一般占4字節(jié)(32位)、提供7位有效數(shù)字。

(2)雙精度型。類(lèi)型關(guān)鍵字為double,一般占8?jìng)€(gè)字節(jié)、提供15~16位有效數(shù)字。

3.4實(shí)型數(shù)據(jù)

(1)十進(jìn)制形式。例如3.143.4.3實(shí)型數(shù)據(jù)在內(nèi)存中的存放形式如單精度數(shù)占四個(gè)字節(jié),分別用來(lái)存儲(chǔ)尾數(shù)與指數(shù)部分,尾數(shù)部分占的位數(shù)越多,精度越高,指數(shù)部分占的位數(shù)越多,則表示數(shù)的范圍越大。3.4.4實(shí)型數(shù)據(jù)有限的精度帶來(lái)的誤差如1.0/3*3在數(shù)學(xué)上結(jié)果等于1

而用C程序運(yùn)算的結(jié)果則不等于1。實(shí)際編程時(shí)假如用1.0/3*3==1來(lái)作為條件判斷或選擇控制就會(huì)出問(wèn)題解決方法:可以用fabs(1.0/3*3-1)<=1e-6來(lái)代替2022/12/1452計(jì)算機(jī)程序設(shè)計(jì)-第三章數(shù)據(jù)類(lèi)型、運(yùn)算符與表達(dá)式3.4.3實(shí)型數(shù)據(jù)在內(nèi)存中的存放形式2022/12/12143.5字符型數(shù)據(jù)3.5.1字符常量1.字符常量的定義用一對(duì)單引號(hào)括起來(lái)的單個(gè)字符,稱(chēng)為字符常量。例如,‘A’、‘1’、‘+’等。2.轉(zhuǎn)義字符(P67)C語(yǔ)言還允許使用一種特殊形式的字符常量,就是以反斜杠“\”開(kāi)頭的轉(zhuǎn)義字符。

注意:如果反斜杠或單、雙引號(hào)本身作為字符常量,必須使用轉(zhuǎn)義字符:‘\\’、‘\’’、‘\”’。2022/12/1453計(jì)算機(jī)程序設(shè)計(jì)-第三章數(shù)據(jù)類(lèi)型、運(yùn)算符與表達(dá)式3.5字符型數(shù)據(jù)3.5.1字符常量2022/12/1OK!

§?

3.5.2字符變量字符變量的類(lèi)型關(guān)鍵字為char,一般占用1字節(jié)內(nèi)存單元。1.變量值的存儲(chǔ)

字符變量用來(lái)存儲(chǔ)字符常量。將一個(gè)字符常量存儲(chǔ)到一個(gè)字符變量中,實(shí)際上是將該字符的ASCII碼值(無(wú)符號(hào)整數(shù))存儲(chǔ)到內(nèi)存單元中。2022/12/1454計(jì)算機(jī)程序設(shè)計(jì)-第三章數(shù)據(jù)類(lèi)型、運(yùn)算符與表達(dá)式[例3.1]main()

{printf(“\x4F\x4B\x21\n”); /*等價(jià)于printf(“OK!\n”);*/

printf(“\x15\xAB\n”);

}程序運(yùn)行結(jié)果如下:OK!

§?例如,charch1,ch2; /*定義兩個(gè)字符變量:ch1,ch2*/ch1=’a’;ch2=’b’;/*給字符變量賦值*/附:ASCII碼:美國(guó)(國(guó)家)信息交換標(biāo)準(zhǔn)(代)碼,給256個(gè)字符(包括字母、數(shù)字、標(biāo)點(diǎn)符號(hào)、控制字符及其他符號(hào))分配數(shù)值,用于在不同計(jì)算機(jī)硬件和軟件系統(tǒng)中實(shí)現(xiàn)數(shù)據(jù)傳輸標(biāo)準(zhǔn)化,在大多數(shù)的小型機(jī)和全部的個(gè)人計(jì)算機(jī)都使用此碼。2022/12/1455計(jì)算機(jī)程序設(shè)計(jì)-第三章數(shù)據(jù)類(lèi)型、運(yùn)算符與表達(dá)式例如,2022/12/1217計(jì)算機(jī)程序設(shè)計(jì)-第三章數(shù)據(jù)類(lèi)2.特性字符數(shù)據(jù)在內(nèi)存中存儲(chǔ)的是字符的ASCII碼──一個(gè)無(wú)符號(hào)整數(shù),其形式與整數(shù)的存儲(chǔ)形式一樣,所以C語(yǔ)言允許字符型數(shù)據(jù)與整型數(shù)據(jù)之間通用。(1)一個(gè)字符型數(shù)據(jù),既可以字符形式輸出,也可以整數(shù)形式輸出。

[例3.2]字符變量的字符形式輸出和整數(shù)形式輸出。

/*程序功能:用字符形式和整數(shù)形式輸出字符變量*/

2022/12/1456計(jì)算機(jī)程序設(shè)計(jì)-第三章數(shù)據(jù)類(lèi)型、運(yùn)算符與表達(dá)式main()

{charch1,ch2;

ch1='a';ch2='b';printf(“ch1=%c,ch2=%c\n”,ch1,ch2);

printf(“ch1=%d,ch2=%d\n”,ch1,ch2);

}

2.特性2022/12/1218計(jì)算機(jī)程序設(shè)計(jì)-第三章數(shù)據(jù)程序運(yùn)行結(jié)果:

ch1=a,ch2=b

ch1=97,ch2=98(2)允許對(duì)字符數(shù)據(jù)進(jìn)行算術(shù)運(yùn)算,此時(shí)就是對(duì)它們的ASCII碼值進(jìn)行算術(shù)運(yùn)算。2022/12/1457計(jì)算機(jī)程序設(shè)計(jì)-第三章數(shù)據(jù)類(lèi)型、運(yùn)算符與表達(dá)式程序運(yùn)行結(jié)果:

ch1=a,ch2=b

main()

{charch1,ch2;

ch1=‘a(chǎn)’;ch2=‘B’;

/*字母的大小寫(xiě)轉(zhuǎn)換*/

printf(“ch1=%c,ch2=%c\n”,ch1-32,ch2+32);

/*用字符形式輸出一個(gè)大于256的數(shù)值*/

printf("ch1+200=%d\n",ch1+200);

printf("ch1+200=%c\n",ch1+200);

printf("ch1+256=%d\n",ch1+256);

printf("ch1+256=%c\n",ch1+256);

}思考:用字符形式輸出一個(gè)大于256的數(shù)值,會(huì)得到什么結(jié)果?2022/12/1458計(jì)算機(jī)程序設(shè)計(jì)-第三章數(shù)據(jù)類(lèi)型、運(yùn)算符與表達(dá)式[例3.3]字符數(shù)據(jù)的算術(shù)運(yùn)算。

/*程序功能:字符數(shù)據(jù)的算術(shù)運(yùn)算*/

main()

{charch1,c程序運(yùn)行結(jié)果:ch1=A,ch2=bch1+200=297ch1+200=)ch1+256=353ch1+256=a 3.5.3字符串常量1.字符串常量的概念和字符串長(zhǎng)度字符串常量是用一對(duì)雙引號(hào)括起來(lái)的若干字符序列。字符串中字符的個(gè)數(shù)稱(chēng)為字符串長(zhǎng)度。長(zhǎng)度為0的字符串(即一個(gè)字符都沒(méi)有的字符串)稱(chēng)為空串,表示為“”(一對(duì)緊連的雙引號(hào))。2022/12/1459計(jì)算機(jī)程序設(shè)計(jì)-第三章數(shù)據(jù)類(lèi)型、運(yùn)算符與表達(dá)式程序運(yùn)行結(jié)果:2022/12/1221計(jì)算機(jī)程序設(shè)計(jì)-第三章例如,“Howdoyoudo.”、“Goodmorning.”等,都是字符串常量,其長(zhǎng)度分別為14和13(空格也是一個(gè)字符)。

如果反斜杠和雙引號(hào)作為字符串中的有效字符,則必須使用轉(zhuǎn)義字符。例如:(1)C:\msdos\v6.22→"C:\\msdos\\v6.22"

(2)Isay:"Goodbye!"→"Isay:\"Goodbye!\""2.字符串的存儲(chǔ)C語(yǔ)言規(guī)定:在存儲(chǔ)字符串常量時(shí),由系統(tǒng)在字符串的末尾自動(dòng)加一個(gè)‘\0’作為字符串的結(jié)束標(biāo)志。注意:在源程序中書(shū)寫(xiě)字符串常量時(shí),不必加結(jié)束字符‘\0’,否則畫(huà)蛇添足。

2022/12/1460計(jì)算機(jī)程序設(shè)計(jì)-第三章數(shù)據(jù)類(lèi)型、運(yùn)算符與表達(dá)式例如,“Howdoyoudo.”、“Goodmorn如果有一個(gè)字符串為“CHINA”,則它在內(nèi)存中的實(shí)際存儲(chǔ)如下所示:最后一個(gè)字符'\0'是系統(tǒng)自動(dòng)加上的,它占用6字節(jié)而非5字節(jié)內(nèi)存空間。綜上所述,字符常量'A'與字符串常量"A"是兩回事:(1)定界符不同:字符常量使用單引號(hào),而字符串常量使用雙引號(hào);(2)長(zhǎng)度不同:字符常量的長(zhǎng)度固定為1,而字符串常量的長(zhǎng)度,可以是0,也可以是某個(gè)整數(shù);(3)存儲(chǔ)要求不同:字符常量存儲(chǔ)的是字符的ASCII碼值,而字符串常量,除了要存儲(chǔ)有效的字符外,還要存儲(chǔ)一個(gè)結(jié)束標(biāo)志’\0’。CHINA\02022/12/1461計(jì)算機(jī)程序設(shè)計(jì)-第三章數(shù)據(jù)類(lèi)型、運(yùn)算符與表達(dá)式如果有一個(gè)字符串為“CHINA”,則它在內(nèi)存中的實(shí)際存儲(chǔ)如下3.6算術(shù)運(yùn)算與算術(shù)表達(dá)式在C語(yǔ)言中,除控制語(yǔ)句和輸入輸出函數(shù)外,其它所有基本操作都作為運(yùn)算符處理。

1.五種基本算術(shù)運(yùn)算符

+、-(減法/取負(fù))、*、/、%(求余數(shù))(1)關(guān)于除法運(yùn)算/C語(yǔ)言規(guī)定:兩個(gè)整數(shù)相除,其商為整數(shù),小數(shù)部分被舍棄。例如,5/2=2。

(2)關(guān)于求余數(shù)運(yùn)算%要求兩側(cè)的操作數(shù)均為整型數(shù)據(jù),否則出錯(cuò)。

2022/12/1462計(jì)算機(jī)程序設(shè)計(jì)-第三章數(shù)據(jù)類(lèi)型、運(yùn)算符與表達(dá)式3.6算術(shù)運(yùn)算與算術(shù)表達(dá)式在C語(yǔ)言中,除控制語(yǔ)句和輸入2.表達(dá)式和算術(shù)表達(dá)式(1)表達(dá)式的概念用運(yùn)算符和括號(hào)將運(yùn)算對(duì)象(常量、變量和函數(shù)等)連接起來(lái)的、符合C語(yǔ)言語(yǔ)法規(guī)則的式子,稱(chēng)為表達(dá)式。單個(gè)常量、變量或函數(shù),可以看作是表達(dá)式的一種特例。將單個(gè)常量、變量或函數(shù)構(gòu)成的表達(dá)式稱(chēng)為簡(jiǎn)單表達(dá)式,其它表達(dá)式稱(chēng)之為復(fù)雜表達(dá)式。2022/12/1463計(jì)算機(jī)程序設(shè)計(jì)-第三章數(shù)據(jù)類(lèi)型、運(yùn)算符與表達(dá)式2.表達(dá)式和算術(shù)表達(dá)式2022/12/1225計(jì)算機(jī)程序設(shè)計(jì)(2)算術(shù)表達(dá)式的概念表達(dá)式中的運(yùn)算符都是算術(shù)運(yùn)算符。例如,3+6*9、(x+y)/2-1等,都是算術(shù)表達(dá)式。良好的源程序書(shū)寫(xiě)習(xí)慣:在表達(dá)式中,在雙目運(yùn)算符的左右兩側(cè)各加一個(gè)空格,可增強(qiáng)程序的可讀性。請(qǐng)比較表達(dá)式“(x+y)/2–1”與“(x+y)/2–1”,您認(rèn)為哪個(gè)的可讀性更好一些?3.運(yùn)算符的優(yōu)先級(jí)與結(jié)合性(P70)(1)C語(yǔ)言規(guī)定了運(yùn)算符的優(yōu)先級(jí)和結(jié)合性。所謂結(jié)合性是指,當(dāng)一個(gè)操作數(shù)兩側(cè)的運(yùn)算符具有相同的優(yōu)先級(jí)時(shí),該操作數(shù)是先與左邊的運(yùn)算符結(jié)合,還是先與右邊的運(yùn)算符結(jié)合。2022/12/1464計(jì)算機(jī)程序設(shè)計(jì)-第三章數(shù)據(jù)類(lèi)型、運(yùn)算符與表達(dá)式(2)算術(shù)表達(dá)式的概念2022/12/1226計(jì)算機(jī)程序設(shè)計(jì)自左至右的結(jié)合方向,稱(chēng)為左結(jié)合性。反之,稱(chēng)為右結(jié)合性。結(jié)合性是C語(yǔ)言的獨(dú)有概念。除單目運(yùn)算符、賦值運(yùn)算符和條件運(yùn)算符是右結(jié)合性外,其它運(yùn)算符都是左結(jié)合性。(2)表達(dá)式求值1)按運(yùn)算符的優(yōu)先級(jí)高低次序執(zhí)行。例如,先乘除后加減。2)如果在一個(gè)運(yùn)算對(duì)象(或稱(chēng)操作數(shù))兩側(cè)的運(yùn)算符的優(yōu)先級(jí)相同,則按C語(yǔ)言規(guī)定的結(jié)合方向(結(jié)合性)進(jìn)行。2022/12/1465計(jì)算機(jī)程序設(shè)計(jì)-第三章數(shù)據(jù)類(lèi)型、運(yùn)算符與表達(dá)式自左至右的結(jié)合方向,稱(chēng)為左結(jié)合性。反之,稱(chēng)為右結(jié)合性。202例如,算術(shù)運(yùn)算符的結(jié)合方向是“自左至右”,即:在執(zhí)行“a–b+c”時(shí),變量b先與減號(hào)結(jié)合,執(zhí)行“a-b”;然后再執(zhí)行加c的運(yùn)算。4.數(shù)據(jù)類(lèi)型轉(zhuǎn)換(1)在C語(yǔ)言中,整型、實(shí)型和字符型數(shù)據(jù)間可以混合運(yùn)算(因?yàn)樽址麛?shù)據(jù)與整型數(shù)據(jù)可以通用)。如果一個(gè)運(yùn)算符兩側(cè)的操作數(shù)的數(shù)據(jù)類(lèi)型不同,則系統(tǒng)按“先轉(zhuǎn)換、后運(yùn)算”的原則,首先將數(shù)據(jù)自動(dòng)轉(zhuǎn)換成同一類(lèi)型,然后在同一類(lèi)型數(shù)據(jù)間進(jìn)行運(yùn)算。轉(zhuǎn)換規(guī)則如p91圖3-6所示。2022/12/1466計(jì)算機(jī)程序設(shè)計(jì)-第三章數(shù)據(jù)類(lèi)型、運(yùn)算符與表達(dá)式例如,算術(shù)運(yùn)算符的結(jié)合方向是“自左至右”,即:在執(zhí)行“a–1)橫向向左的箭頭,表示必須的轉(zhuǎn)換。char和short型必須轉(zhuǎn)換成int型,float型必須轉(zhuǎn)換成double型。2)縱向向上的箭頭,表示不同類(lèi)型的轉(zhuǎn)換方向。例如,int型與double型數(shù)據(jù)進(jìn)行混合運(yùn)算,則先將int型數(shù)據(jù)轉(zhuǎn)換成double型,然后在兩個(gè)同類(lèi)型的數(shù)據(jù)間進(jìn)行運(yùn)算,結(jié)果為double型。注意:箭頭方向只表示數(shù)據(jù)類(lèi)型由低向高轉(zhuǎn)換,不要理解為int型先轉(zhuǎn)換成unsigned型,再轉(zhuǎn)換成long型,最后轉(zhuǎn)換成double型。(2)除自動(dòng)轉(zhuǎn)換外,C語(yǔ)言也允許強(qiáng)制轉(zhuǎn)換。數(shù)據(jù)類(lèi)型強(qiáng)制轉(zhuǎn)換的一般格式為:

(要轉(zhuǎn)換成的數(shù)據(jù)類(lèi)型)(被轉(zhuǎn)換的表達(dá)式)2022/12/1467計(jì)算機(jī)程序設(shè)計(jì)-第三章數(shù)據(jù)類(lèi)型、運(yùn)算符與表達(dá)式1)橫向向左的箭頭,表示必須的轉(zhuǎn)換。char和short型

當(dāng)被轉(zhuǎn)換的表達(dá)式是一個(gè)簡(jiǎn)單表達(dá)式時(shí),外面的一對(duì)圓括號(hào)可以缺省。例如,(double)a(等價(jià)于(double)(a))/*將變量a的值轉(zhuǎn)換成double型*/(int)(x+y) /*將x+y的結(jié)果轉(zhuǎn)換成int型*/(float)5/2(等價(jià)于(float)(5)/2)/*將5轉(zhuǎn)換成實(shí)型,再除以2(=2.5)*/(float)(5/2) /*將5整除2的結(jié)果(2)轉(zhuǎn)換成實(shí)型(2.0)*/

注意:強(qiáng)制轉(zhuǎn)換類(lèi)型得到的是一個(gè)所需類(lèi)型的中間量,原表達(dá)式類(lèi)型并不發(fā)生變化。例如,(double)a只是將變量a的值轉(zhuǎn)換成一個(gè)double型的中間量,其數(shù)據(jù)類(lèi)型并未轉(zhuǎn)換成double型。2022/12/1468計(jì)算機(jī)程序設(shè)計(jì)-第三章數(shù)據(jù)類(lèi)型、運(yùn)算符與表達(dá)式當(dāng)被轉(zhuǎn)換的表達(dá)式是一個(gè)簡(jiǎn)單表達(dá)式時(shí),外面的一對(duì)圓括號(hào)可以3.7賦值運(yùn)算與賦值表達(dá)式

1.賦值運(yùn)算賦值符號(hào)“=”就是賦值運(yùn)算符,它的作用是將一個(gè)表達(dá)式的值賦給一個(gè)變量。賦值運(yùn)算符的一般形式為:變量=賦值表達(dá)式

例如,x=5

y=(float)5/2

如果表達(dá)式值的類(lèi)型,與被賦值變量的類(lèi)

溫馨提示

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

評(píng)論

0/150

提交評(píng)論