C語(yǔ)言第2章C語(yǔ)言的基本數(shù)據(jù)類型與表達(dá)式.ppt_第1頁(yè)
C語(yǔ)言第2章C語(yǔ)言的基本數(shù)據(jù)類型與表達(dá)式.ppt_第2頁(yè)
C語(yǔ)言第2章C語(yǔ)言的基本數(shù)據(jù)類型與表達(dá)式.ppt_第3頁(yè)
C語(yǔ)言第2章C語(yǔ)言的基本數(shù)據(jù)類型與表達(dá)式.ppt_第4頁(yè)
C語(yǔ)言第2章C語(yǔ)言的基本數(shù)據(jù)類型與表達(dá)式.ppt_第5頁(yè)
已閱讀5頁(yè),還剩50頁(yè)未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、第 2 章 C語(yǔ)言的基本數(shù)據(jù)類型與表達(dá)式,2.1 C語(yǔ)言的基本數(shù)據(jù)類型 2.2 常量與變量 2.3 運(yùn)算符與表達(dá)式 2.4 數(shù)據(jù)類型轉(zhuǎn)換,教學(xué)目的和基本要求:,要求學(xué)生清楚數(shù)據(jù)類型與變量、常量的關(guān)系,掌握各種常量的性質(zhì)和定義,掌握表達(dá)式中各種運(yùn)算符的功能和特點(diǎn),明白產(chǎn)生副作用的原因,了解數(shù)據(jù)類型的相互轉(zhuǎn)換規(guī)則。,教學(xué)重點(diǎn):,數(shù)據(jù)類型、常量定義,運(yùn)算符與表達(dá)式。,存取數(shù)據(jù)必須先確定數(shù)據(jù)的編碼方式、存儲(chǔ)格式和所占的存儲(chǔ)長(zhǎng)度, C語(yǔ)言中把這三者結(jié)合起來(lái),給出幾種固定的形式,這些形式就是最基本的數(shù)據(jù)類型。,2.1 C語(yǔ)言的基本數(shù)據(jù)類型,為什么要設(shè)置數(shù)據(jù)類型?,在計(jì)算機(jī)中使用一定長(zhǎng)度的存儲(chǔ)單元(通常是字

2、節(jié)的倍數(shù))來(lái)存儲(chǔ)數(shù)據(jù)。,存儲(chǔ)的編碼方式有:原碼、反碼、補(bǔ)碼、ASCII碼 存儲(chǔ)的存儲(chǔ)格式有:定點(diǎn)型、浮點(diǎn)型,其中,用于存儲(chǔ)數(shù)據(jù)的存儲(chǔ)單元的長(zhǎng)度決定了數(shù)據(jù)取值范圍的大小。,例如:,【例2.1】計(jì)算圓的面積,半徑為 5 cm。 程序如下:,main( ) float r, area ; r=5 ; area=3.14*r*r; printf (%fn , area) ; ,運(yùn)算結(jié)果是輸出圓的面積:78.500000,程序中用到的數(shù)據(jù):r、area、5、3.14 對(duì)數(shù)據(jù)進(jìn)行的運(yùn)算:* 、=,例jc2_1,分析:,計(jì)算機(jī)操作處理時(shí),要完成以下工作: 在內(nèi)存中給半徑 r 和運(yùn)算結(jié)果 area 開辟存儲(chǔ)空

3、間,存放它們的值。應(yīng)該留多大的地方來(lái)存放它們的值? 數(shù)據(jù) 5 和 3.14 與 r 、area 不同,它們是在編寫程序時(shí)就給出確定的值,在運(yùn)算過(guò)程中不會(huì)改變。這樣的數(shù)計(jì)算機(jī)怎么處理? 對(duì)整數(shù) 5 和小數(shù)3.14 ,計(jì)算機(jī)存放時(shí)是否有區(qū)別?,涉及數(shù)據(jù)類型 的基本知識(shí),字符型(char) 整型(int,short, long,unsigned,long long) 單精度型(float) 實(shí)型 雙精度型(double) 長(zhǎng)雙精度(long long_comple) 枚舉類型(enum) 數(shù)組類型( ) 構(gòu)造類型 結(jié)構(gòu)體類型(struct) 共用體類型(union) 指針類型(*) 空類型(void

4、),一、數(shù)據(jù)類型概述,本章討論 基本類型數(shù)據(jù),變量:指以標(biāo)識(shí)符為名字,其值可以改變的量。,在學(xué)習(xí)各種數(shù)據(jù)類型之前,我們先簡(jiǎn)單了解一下常量和變量的概念。后面的章節(jié)中將會(huì)詳細(xì)介紹。,常量:指在程序運(yùn)行中,其數(shù)值不能被改變的量。,變量 代表計(jì)算機(jī)內(nèi)存中的某一存儲(chǔ)空間,變量的類型決定了該存儲(chǔ)空間的長(zhǎng)度和其中存放數(shù)據(jù)的編碼方式及存儲(chǔ)格式。 變量的類型也決定了該存儲(chǔ)空間中存放數(shù)據(jù)的數(shù)據(jù)形式和取值范圍。,* 八進(jìn)制的數(shù)碼范圍為07; 018 * 十六進(jìn)制的數(shù)碼除了數(shù)字09外, 還使用英文字母a f (或A F)表示1015。 如:0 x1e * 整型數(shù)據(jù)均以二進(jìn)制補(bǔ)碼形式存儲(chǔ),注意!,二、整型(采用定點(diǎn)整數(shù)

5、的存儲(chǔ)格式,只能表示純整數(shù)),1、整型常量:,(1) 十進(jìn)制形式:與數(shù)學(xué)上的整數(shù)表示相同; 例如: 12, -100, 0 (2) 八進(jìn)制形式:在數(shù)碼前加數(shù)字0; 例如: 012=1*81+2*80=10(十進(jìn)制) (3) 十六進(jìn)制形式:在數(shù)碼前加0X(數(shù)字0和字母X)。 例如: 0 x12=1*161+2*160=18(十進(jìn)制),問(wèn)題: 為什么要采用補(bǔ)碼? 如何表示?,計(jì)算機(jī)中正、負(fù)數(shù)的表示,例如:109 (1101101)2 要區(qū)別:109 和 109 方法是:將符號(hào)也數(shù)碼化 即:正的符號(hào) 用 0 表示 負(fù)的符號(hào) 用 1 表示, 計(jì)算機(jī)中的數(shù)表示方法是: 符號(hào)位二進(jìn)制數(shù)值(以 8bit 為

6、例) 109 110 1101 0110 1101 109 110 1101 1110 1101,問(wèn)題:計(jì)算機(jī)計(jì)算復(fù)雜化,例如計(jì)算: (-19)+(+22) 1001 0011 + 0001 0110,解決的方法是: 使用反碼或補(bǔ)碼的表示方法(按前述表示的編碼稱為原碼),即能將減法一律轉(zhuǎn)換為加法。,需要判斷符號(hào)是否相同: 如果相同,結(jié)果符號(hào)不變,并進(jìn)行絕對(duì)值相加 如果不同,結(jié)果取絕對(duì)值大的數(shù)的符號(hào),并進(jìn)行絕對(duì)值相減,原碼、反碼和補(bǔ)碼,正數(shù):原碼、反碼、補(bǔ)碼相同 符號(hào)位為0,數(shù)值為對(duì)應(yīng)的二進(jìn)制數(shù)。 109,01101101原 = 01101101反 = 01101101補(bǔ) 負(fù)數(shù): 原碼符號(hào)位為1

7、,數(shù)值為絕對(duì)值的二進(jìn)制數(shù)。 10911101101原 反碼符號(hào)位為1,數(shù)值為絕對(duì)值的二進(jìn)制數(shù)各位變反。 10910010010反 補(bǔ)碼符號(hào)位為1,數(shù)值為絕對(duì)值的二進(jìn)制數(shù)各位變反加1。10910010011補(bǔ),2、整型變量的分類:,根據(jù)數(shù)據(jù)所占的存儲(chǔ)長(zhǎng)度的不同分為:int、short、long、long long; 同樣存儲(chǔ)長(zhǎng)度的數(shù)據(jù)又分unsigned、signed; 故可組合出八種類型(參考課本P46)。,3、整型變量的值域:,由機(jī)器中數(shù)據(jù)的存儲(chǔ)長(zhǎng)度決定,思考:int a=20000,b=20000,c; c=a+b; c的值為多少? 如果c定義為long型是否能解決問(wèn)題?,注意:C標(biāo)準(zhǔn)沒有

8、具體規(guī)定各種數(shù)據(jù)類型 占用存儲(chǔ)單元的長(zhǎng)度,在不同的編譯系統(tǒng) 中規(guī)定不盡相同,如在VC6.0中short為2B, int和long都為四個(gè)字節(jié),注意,三、實(shí)型,1、常量: (1) 十進(jìn)制小數(shù)形式:由數(shù)字和小數(shù)點(diǎn)組成; 例如: 3.4, 4., .3。 (2) 指數(shù)形式:“十進(jìn)制小數(shù)”+“ e(或E)”+“十進(jìn)制數(shù)整數(shù)”。 例如: 12.5e-6 表示12.510-6 。, 小數(shù)點(diǎn)不能單獨(dú)出現(xiàn); 0. .0 . e或E的兩邊必須有數(shù),且其后面必須為整數(shù); 如: 6E0.2 e5 ,實(shí)型數(shù)據(jù)的類型 單精度實(shí)型數(shù)據(jù) float,分配4 Byte 雙精度實(shí)型數(shù)據(jù)double,分配 8 Byte 實(shí)型數(shù)據(jù)

9、的存儲(chǔ),單精度實(shí)型,指數(shù)部分 31 30 (8位) 23 63 62 (11位) 52,小數(shù)部分 22 0 51 0,小數(shù)的符號(hào)位,隱藏“1”,2、實(shí)型變量的分類及值域:,實(shí)型數(shù)據(jù)的類型及規(guī)定,C標(biāo)準(zhǔn)并未具體規(guī)定各種實(shí)型數(shù)據(jù)所占字節(jié)數(shù),也不規(guī)定具體小數(shù)和指數(shù)部分的位數(shù)。 一般而言,小數(shù)部分位數(shù)多,數(shù)據(jù)表示的有效數(shù)字多,精度就高;而指數(shù)部分位數(shù)多,則表示的數(shù)據(jù)范圍更大。(參照課本P51說(shuō)明),有效數(shù)字的意義?,字符形式 功能 n 換行 t 橫向跳格 b 退格 r 回車 反斜杠字符 單引號(hào)字符 ddd 8進(jìn)制數(shù)表示的ASCII碼對(duì)應(yīng)的字符 xhh 16進(jìn)制數(shù)表示的ASCII碼對(duì)應(yīng)的字符,四、字符類

10、型,1、常量: (1) 用單引號(hào)括起來(lái)的一個(gè)字符;如:A、 1、?等。 (2) 用單引號(hào)括起來(lái)的由反斜杠()引導(dǎo)的轉(zhuǎn)義字符。,4、字符串常量: 是用一對(duì)雙引號(hào)括起來(lái)的字符序列。 注意:每個(gè)字符串的后面都有一個(gè)0結(jié)束符。 如:“SHANGHAI”,“AbcdeFGHijk”,“How are you”。,注意, a與“a”的區(qū)別。,例如:字符A的ASCII碼為: 65D(十進(jìn)制)=41H(十六進(jìn)制)=101Q(八進(jìn)制) 字符A可以表示為A、x41、101。,2、字符型變量的分類: char 和 unsigned char;,3、值域(字符型可參與數(shù)學(xué)運(yùn)算,也可看成一種一字節(jié)的整型變量) 每個(gè)字符

11、型數(shù)據(jù)在內(nèi)存中占一個(gè)字節(jié);包括ASCII字符表中的所有字符(可顯示字符和非顯示字符)。,一、常量、符號(hào)常量及常變量 常量是指在程序運(yùn)行中,其數(shù)值不能被改變的量。 常量又可分為直接常量和符號(hào)常量。,2.2 常量與變量,120 、 -100、 0; 0120、 072; 0 xFFFF、 0 x1e、0X28AF,0XED4 ; 120L, 200L ; 長(zhǎng)整型常量 3.14、 -3.1、 5.12E-6 ; a 、#、n、101 ; 099、12f、 0 xg 、48EA ; 019.5 、1e-08; 實(shí)型常量只能用十進(jìn)制形式表示 2.1E10.2、E-6、6.4E+4.8、E9 ; chan

12、gsha 、+?ab ; 、p 、ab ;,1、直接常量:是在程序中直接引用的數(shù)據(jù)。,請(qǐng)判斷這些常量正確與否:,定義形式: #define 標(biāo)識(shí)符 常量數(shù)據(jù) 例如: #define PI 3.14159 在程序預(yù)處理時(shí),凡是出現(xiàn)標(biāo)識(shí)符PI的地方都將用 數(shù)據(jù)3.14159來(lái)替換。 如: 2*2.3*PI 就等價(jià)于 2*2.3*3.14159。, 變量是指以標(biāo)識(shí)符為名字,其值可以改變的量。 變量代表計(jì)算機(jī)內(nèi)存中的某一存儲(chǔ)空間,該存儲(chǔ)空間 中存放的數(shù)據(jù)就是變量的值。 在同一程序塊中,變量不能被重復(fù)定義。 使用變量時(shí)必須“先定義,后使用”。,2、符號(hào)常量 是用標(biāo)識(shí)符來(lái)表示一個(gè)數(shù)據(jù);在程序不能給它賦值。

13、,二、 變量,3、常變量(C99中使用) const int a=3;,注意符號(hào)常量和常變量的區(qū)別(課本P42),注意,int a=5, b=3; int a=b=c=3; int a,b,c; a=b=c=3; ,例如:int a,b,c ; float x,y; char c1,c2; 或 int c1,c2; 定義變量就是在內(nèi)存中劃出一塊相應(yīng)類型的存儲(chǔ)空間存放該變量的值。,main( ) int x,y,z,w; /*定義x,y,z,w為整型變量*/ unsigned int k; /*定義k為無(wú)符號(hào)整型變量*/ x=10;y=-20;k=30; z=x+k;w=y+k; printf(

14、“x+k=%d,y+k=%dn”,z,w); ,例2-2:,程序運(yùn)行結(jié)果為: x+k=40,y+k=10,變量根據(jù)作用域的不同可分為局部變量和全局變量,根據(jù)存儲(chǔ)方式的不同可分為靜態(tài)存儲(chǔ)變量和動(dòng)態(tài)存儲(chǔ)變量,這些我們將在第六章中詳細(xì)介紹。,2.3 運(yùn)算符和表達(dá)式,主要內(nèi)容: 算術(shù)運(yùn)算符和算術(shù)表達(dá)式 賦值運(yùn)算符和賦值表達(dá)式 關(guān)系運(yùn)算符和關(guān)系表達(dá)式 邏輯運(yùn)算符和邏輯表達(dá)式 位運(yùn)算符和位運(yùn)算表達(dá)式 條件運(yùn)算符和條件表達(dá)式 逗號(hào)運(yùn)算符和逗號(hào)表達(dá)式 其他運(yùn)算符及其運(yùn)算,運(yùn)算符的有關(guān)概念,作用: 對(duì)運(yùn)算對(duì)象完成規(guī)定的操作運(yùn)算 類型: 按運(yùn)算對(duì)象分: 單目、雙目、三目 按功能分: 算術(shù)、賦值、關(guān)系、邏輯 條件、

15、逗號(hào)、位、其他,運(yùn)算符的優(yōu)先級(jí)和結(jié)合性,優(yōu)先級(jí) 指各種運(yùn)算符號(hào)的運(yùn)算優(yōu)先順序 例如:算術(shù)運(yùn)算優(yōu)先于關(guān)系運(yùn)算 算術(shù)運(yùn)算中先 * / 后 + -,結(jié)合性 指運(yùn)算符號(hào)和運(yùn)算對(duì)象的結(jié)合方向 分為:從左向右(左結(jié)合)和從右向左(右結(jié)合) 例如:算術(shù)運(yùn)算符為左結(jié)合 a-b+4 賦值運(yùn)算符為右結(jié)合 a= b = 5 ( C語(yǔ)言規(guī)定見教材 附錄C),本章涉及的運(yùn)算符,+ - * / % + - + - = += -= *= /= %= int b=6,c=3; 求解: a*b/c-1.5+a+fabs(-5)=?,float a=2.0; int b =6,c =3; a*b/c -1.5 +a +fabs(

16、-5),12.0/3,5,4.0 - 1.5,2.5 + 97(int),99.5 + 5,104.5(double),思考 int a=1,b=2; 表達(dá)式a/b+3的結(jié)果是多少? int a=10000,b=30000; 表達(dá)式a+b的結(jié)果是多少? 如何修改?,3、自增自減運(yùn)算,+ -是單目運(yùn)算符 有前綴和后綴兩種形式 前綴形式: 先自增(自減)再引用; 后綴形式: 先引用再自增(自減); 功能: 前綴形式 + a 等價(jià)于 a = a + 1 - a 等價(jià)于 a = a 1 后綴形式 a + 等價(jià)于 a = a + 1 a - 等價(jià)于 a = a 1,表達(dá)式的值會(huì)不同,例如 當(dāng) a5 時(shí)

17、+a 表達(dá)式的值為 6,且 a6 a+ 表達(dá)式的值為5 ,且 a6 b=+a 等價(jià)于 a=a+1; b=a 表達(dá)式的值為6,且 a=6, b=6 b=a+ 等價(jià)于 b=a; a=a+1 表達(dá)式的值為5,且 a=6, b=5,說(shuō)明:,+ 和 - 的運(yùn)算對(duì)象只能是變量(或運(yùn)算結(jié)果是變量的表達(dá)式), 不能是常量(或運(yùn)算結(jié)果是數(shù)值的表達(dá)式)。 例如: 5+、(a+2)+ 不合法。 具有右結(jié)合性,結(jié)合方向?yàn)閺挠业阶蟆?例如: a+ 等價(jià)于 -(a+) 如果有多個(gè)運(yùn)算符連續(xù)出現(xiàn)時(shí),C系統(tǒng)盡可能多的從左到右將字符組合成一個(gè)運(yùn)算符 例如: i + j 等價(jià)于 ( i+)+j -i+-j 等價(jià)于 -(i+)+(

18、-j),main( ) int a=5; printf(%d %dn,a,a+ ); ,說(shuō)明(續(xù)):,對(duì)函數(shù)參數(shù)的求值順序: Turbo C系統(tǒng)先計(jì)算最右邊的參數(shù)值,再依次計(jì)算左面的參數(shù)值。,【例2.3】有多個(gè)函數(shù)參數(shù)且為同一變量自增的運(yùn)算處理。,輸出結(jié)果: 6 5,運(yùn)行例2.3,說(shuō)明(續(xù)):,【例2.4】有多個(gè)函數(shù)參數(shù)且為同一變量多次自增的運(yùn)算處理。,main( ) int a=5; printf(%d%dn,a,(a+)+( a+); ,輸出結(jié)果: 7 11,運(yùn)行例2.4,特殊的:設(shè)i=3,j=4,k=i+j, k= i= j=,再看幾個(gè)例子: 如:設(shè)i=3,k=(i+)+(i+)+(i+

19、) k= i=,9,6,如:設(shè)a=3,b=(a+)+(a+) b= a=,6,5,設(shè)a=3,b=(+a)+(a+) b= a=,8,5,設(shè)a=3,b=(a+)+(+a) b= a=,7,5,設(shè)a=3,b=(+a)+(+a) b= a=,10,5,7,4,4,main( ) int a=5,b,c,k; k=a+(b=a+)+(c=a+); printf(%d%d%d%dn,a,b,c,k); ,main( ) int a=5,b,c; printf(%d%d%d%dn,a,b,c,a+(b=a+)+(c=a+); ,思考!,1、6種關(guān)系運(yùn)算符:= = != 2、關(guān)系表達(dá)式:用關(guān)系運(yùn)算符將表達(dá)式

20、連接起來(lái)的式子 優(yōu)先級(jí): (= )( = != ) 結(jié)合性:自左至右; 表達(dá)式的值: 若為真,則結(jié)果為1; 若為假,則結(jié)果為0。,35 值為: 32 值為: 設(shè)x=-2; -3x-1 值為: 設(shè)x=1; 2x4 值為:,例如,二、關(guān)系運(yùn)算符和關(guān)系表達(dá)式,求如下關(guān)系表達(dá)式的值:,0,0,0,1,算術(shù)運(yùn)算符優(yōu)先級(jí)高于關(guān)系運(yùn)算符 3+(43)*4 值為: 3+43*4 值為,3,1,注意,不能用數(shù)學(xué)里習(xí)慣的關(guān)系運(yùn)算符連用表示區(qū)間關(guān)系!,2、邏輯表達(dá)式:用邏輯運(yùn)算符將表達(dá)式連接起來(lái)的式子 優(yōu)先級(jí): ! float b=3.5; !a ( ) !(a 0) ( ) (a 0) ( ),例如,0,1,1,

21、0,0,0,1,1,0,0,0,1,例如表達(dá)式運(yùn)算如下:,混合優(yōu)先級(jí): ! 高 算術(shù)運(yùn)算符 關(guān)系運(yùn)算符 b = 1; c = a+ 執(zhí)行后: a為 ,b為 ,c為 。,1,1,0,(2)a = 1; b = 1; c=0; d = -a b- (c = b+3 ); 執(zhí)行后: a為 ,b為 ,c為 ,d為 。,0,0,0,1,例如: (1) n是小于m的偶數(shù): (2)year是閏年: (能被4整除但不能被100整除,或能被400整除),邏輯表達(dá)式一般用于控制語(yǔ)句中的條件:,n m max=ab?a:b 求max的值,max的值為5,例如: a b y 表達(dá)式 y=a=4,b=5,a+b; y=(a=4,b=5,a+b); y=(a=4,b=5),a+b; y=a=(4,b=5),a+b;,4,5,4,9,4,5,9,9,4,5,9,5,5,5,5,10, 形式有兩種: sizeof 變量名 sizeof (類型名) 結(jié)果為整型數(shù)。,int a; float x; printf(“%d,%d”,sizeof a,sizeof x); printf(“%d,%d”,sizeof(int),sizeof(float); 以上兩個(gè)printf語(yǔ)句結(jié)果均為 。,例如,3、求字節(jié)運(yùn)算符: sizeof 作用:求得變量或某種數(shù)據(jù)類型所需的字節(jié)數(shù)。,2,4,C語(yǔ)言允許整型、實(shí)型、字符型數(shù)據(jù)

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(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)論