版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
1、第 2 章 C語言的基本數(shù)據(jù)類型與表達(dá)式,2.1 C語言的基本數(shù)據(jù)類型 2.2 常量與變量 2.3 運算符與表達(dá)式 2.4 數(shù)據(jù)類型轉(zhuǎn)換,教學(xué)目的和基本要求:,要求學(xué)生清楚數(shù)據(jù)類型與變量、常量的關(guān)系,掌握各種常量的性質(zhì)和定義,掌握表達(dá)式中各種運算符的功能和特點,明白產(chǎn)生副作用的原因,了解數(shù)據(jù)類型的相互轉(zhuǎn)換規(guī)則。,教學(xué)重點:,數(shù)據(jù)類型、常量定義,運算符與表達(dá)式。,存取數(shù)據(jù)必須先確定數(shù)據(jù)的編碼方式、存儲格式和所占的存儲長度, C語言中把這三者結(jié)合起來,給出幾種固定的形式,這些形式就是最基本的數(shù)據(jù)類型。,2.1 C語言的基本數(shù)據(jù)類型,為什么要設(shè)置數(shù)據(jù)類型?,在計算機中使用一定長度的存儲單元(通常是字
2、節(jié)的倍數(shù))來存儲數(shù)據(jù)。,存儲的編碼方式有:原碼、反碼、補碼、ASCII碼 存儲的存儲格式有:定點型、浮點型,其中,用于存儲數(shù)據(jù)的存儲單元的長度決定了數(shù)據(jù)取值范圍的大小。,例如:,【例2.1】計算圓的面積,半徑為 5 cm。 程序如下:,main( ) float r, area ; r=5 ; area=3.14*r*r; printf (%fn , area) ; ,運算結(jié)果是輸出圓的面積:78.500000,程序中用到的數(shù)據(jù):r、area、5、3.14 對數(shù)據(jù)進(jìn)行的運算:* 、=,例jc2_1,分析:,計算機操作處理時,要完成以下工作: 在內(nèi)存中給半徑 r 和運算結(jié)果 area 開辟存儲空
3、間,存放它們的值。應(yīng)該留多大的地方來存放它們的值? 數(shù)據(jù) 5 和 3.14 與 r 、area 不同,它們是在編寫程序時就給出確定的值,在運算過程中不會改變。這樣的數(shù)計算機怎么處理? 對整數(shù) 5 和小數(shù)3.14 ,計算機存放時是否有區(qū)別?,涉及數(shù)據(jù)類型 的基本知識,字符型(char) 整型(int,short, long,unsigned,long long) 單精度型(float) 實型 雙精度型(double) 長雙精度(long long_comple) 枚舉類型(enum) 數(shù)組類型( ) 構(gòu)造類型 結(jié)構(gòu)體類型(struct) 共用體類型(union) 指針類型(*) 空類型(void
4、),一、數(shù)據(jù)類型概述,本章討論 基本類型數(shù)據(jù),變量:指以標(biāo)識符為名字,其值可以改變的量。,在學(xué)習(xí)各種數(shù)據(jù)類型之前,我們先簡單了解一下常量和變量的概念。后面的章節(jié)中將會詳細(xì)介紹。,常量:指在程序運行中,其數(shù)值不能被改變的量。,變量 代表計算機內(nèi)存中的某一存儲空間,變量的類型決定了該存儲空間的長度和其中存放數(shù)據(jù)的編碼方式及存儲格式。 變量的類型也決定了該存儲空間中存放數(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)制補碼形式存儲,注意!,二、整型(采用定點整數(shù)
5、的存儲格式,只能表示純整數(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)制),問題: 為什么要采用補碼? 如何表示?,計算機中正、負(fù)數(shù)的表示,例如:109 (1101101)2 要區(qū)別:109 和 109 方法是:將符號也數(shù)碼化 即:正的符號 用 0 表示 負(fù)的符號 用 1 表示, 計算機中的數(shù)表示方法是: 符號位二進(jìn)制數(shù)值(以 8bit 為
6、例) 109 110 1101 0110 1101 109 110 1101 1110 1101,問題:計算機計算復(fù)雜化,例如計算: (-19)+(+22) 1001 0011 + 0001 0110,解決的方法是: 使用反碼或補碼的表示方法(按前述表示的編碼稱為原碼),即能將減法一律轉(zhuǎn)換為加法。,需要判斷符號是否相同: 如果相同,結(jié)果符號不變,并進(jìn)行絕對值相加 如果不同,結(jié)果取絕對值大的數(shù)的符號,并進(jìn)行絕對值相減,原碼、反碼和補碼,正數(shù):原碼、反碼、補碼相同 符號位為0,數(shù)值為對應(yīng)的二進(jìn)制數(shù)。 109,01101101原 = 01101101反 = 01101101補 負(fù)數(shù): 原碼符號位為1
7、,數(shù)值為絕對值的二進(jìn)制數(shù)。 10911101101原 反碼符號位為1,數(shù)值為絕對值的二進(jìn)制數(shù)各位變反。 10910010010反 補碼符號位為1,數(shù)值為絕對值的二進(jìn)制數(shù)各位變反加1。10910010011補,2、整型變量的分類:,根據(jù)數(shù)據(jù)所占的存儲長度的不同分為:int、short、long、long long; 同樣存儲長度的數(shù)據(jù)又分unsigned、signed; 故可組合出八種類型(參考課本P46)。,3、整型變量的值域:,由機器中數(shù)據(jù)的存儲長度決定,思考:int a=20000,b=20000,c; c=a+b; c的值為多少? 如果c定義為long型是否能解決問題?,注意:C標(biāo)準(zhǔn)沒有
8、具體規(guī)定各種數(shù)據(jù)類型 占用存儲單元的長度,在不同的編譯系統(tǒng) 中規(guī)定不盡相同,如在VC6.0中short為2B, int和long都為四個字節(jié),注意,三、實型,1、常量: (1) 十進(jìn)制小數(shù)形式:由數(shù)字和小數(shù)點組成; 例如: 3.4, 4., .3。 (2) 指數(shù)形式:“十進(jìn)制小數(shù)”+“ e(或E)”+“十進(jìn)制數(shù)整數(shù)”。 例如: 12.5e-6 表示12.510-6 。, 小數(shù)點不能單獨出現(xiàn); 0. .0 . e或E的兩邊必須有數(shù),且其后面必須為整數(shù); 如: 6E0.2 e5 ,實型數(shù)據(jù)的類型 單精度實型數(shù)據(jù) float,分配4 Byte 雙精度實型數(shù)據(jù)double,分配 8 Byte 實型數(shù)據(jù)
9、的存儲,單精度實型,指數(shù)部分 31 30 (8位) 23 63 62 (11位) 52,小數(shù)部分 22 0 51 0,小數(shù)的符號位,隱藏“1”,2、實型變量的分類及值域:,實型數(shù)據(jù)的類型及規(guī)定,C標(biāo)準(zhǔn)并未具體規(guī)定各種實型數(shù)據(jù)所占字節(jié)數(shù),也不規(guī)定具體小數(shù)和指數(shù)部分的位數(shù)。 一般而言,小數(shù)部分位數(shù)多,數(shù)據(jù)表示的有效數(shù)字多,精度就高;而指數(shù)部分位數(shù)多,則表示的數(shù)據(jù)范圍更大。(參照課本P51說明),有效數(shù)字的意義?,字符形式 功能 n 換行 t 橫向跳格 b 退格 r 回車 反斜杠字符 單引號字符 ddd 8進(jìn)制數(shù)表示的ASCII碼對應(yīng)的字符 xhh 16進(jìn)制數(shù)表示的ASCII碼對應(yīng)的字符,四、字符類
10、型,1、常量: (1) 用單引號括起來的一個字符;如:A、 1、?等。 (2) 用單引號括起來的由反斜杠()引導(dǎo)的轉(zhuǎn)義字符。,4、字符串常量: 是用一對雙引號括起來的字符序列。 注意:每個字符串的后面都有一個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é)運算,也可看成一種一字節(jié)的整型變量) 每個字符
11、型數(shù)據(jù)在內(nèi)存中占一個字節(jié);包括ASCII字符表中的所有字符(可顯示字符和非顯示字符)。,一、常量、符號常量及常變量 常量是指在程序運行中,其數(shù)值不能被改變的量。 常量又可分為直接常量和符號常量。,2.2 常量與變量,120 、 -100、 0; 0120、 072; 0 xFFFF、 0 x1e、0X28AF,0XED4 ; 120L, 200L ; 長整型常量 3.14、 -3.1、 5.12E-6 ; a 、#、n、101 ; 099、12f、 0 xg 、48EA ; 019.5 、1e-08; 實型常量只能用十進(jìn)制形式表示 2.1E10.2、E-6、6.4E+4.8、E9 ; chan
12、gsha 、+?ab ; 、p 、ab ;,1、直接常量:是在程序中直接引用的數(shù)據(jù)。,請判斷這些常量正確與否:,定義形式: #define 標(biāo)識符 常量數(shù)據(jù) 例如: #define PI 3.14159 在程序預(yù)處理時,凡是出現(xiàn)標(biāo)識符PI的地方都將用 數(shù)據(jù)3.14159來替換。 如: 2*2.3*PI 就等價于 2*2.3*3.14159。, 變量是指以標(biāo)識符為名字,其值可以改變的量。 變量代表計算機內(nèi)存中的某一存儲空間,該存儲空間 中存放的數(shù)據(jù)就是變量的值。 在同一程序塊中,變量不能被重復(fù)定義。 使用變量時必須“先定義,后使用”。,2、符號常量 是用標(biāo)識符來表示一個數(shù)據(jù);在程序不能給它賦值。
13、,二、 變量,3、常變量(C99中使用) const int a=3;,注意符號常量和常變量的區(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)類型的存儲空間存放該變量的值。,main( ) int x,y,z,w; /*定義x,y,z,w為整型變量*/ unsigned int k; /*定義k為無符號整型變量*/ x=10;y=-20;k=30; z=x+k;w=y+k; printf(
14、“x+k=%d,y+k=%dn”,z,w); ,例2-2:,程序運行結(jié)果為: x+k=40,y+k=10,變量根據(jù)作用域的不同可分為局部變量和全局變量,根據(jù)存儲方式的不同可分為靜態(tài)存儲變量和動態(tài)存儲變量,這些我們將在第六章中詳細(xì)介紹。,2.3 運算符和表達(dá)式,主要內(nèi)容: 算術(shù)運算符和算術(shù)表達(dá)式 賦值運算符和賦值表達(dá)式 關(guān)系運算符和關(guān)系表達(dá)式 邏輯運算符和邏輯表達(dá)式 位運算符和位運算表達(dá)式 條件運算符和條件表達(dá)式 逗號運算符和逗號表達(dá)式 其他運算符及其運算,運算符的有關(guān)概念,作用: 對運算對象完成規(guī)定的操作運算 類型: 按運算對象分: 單目、雙目、三目 按功能分: 算術(shù)、賦值、關(guān)系、邏輯 條件、
15、逗號、位、其他,運算符的優(yōu)先級和結(jié)合性,優(yōu)先級 指各種運算符號的運算優(yōu)先順序 例如:算術(shù)運算優(yōu)先于關(guān)系運算 算術(shù)運算中先 * / 后 + -,結(jié)合性 指運算符號和運算對象的結(jié)合方向 分為:從左向右(左結(jié)合)和從右向左(右結(jié)合) 例如:算術(shù)運算符為左結(jié)合 a-b+4 賦值運算符為右結(jié)合 a= b = 5 ( C語言規(guī)定見教材 附錄C),本章涉及的運算符,+ - * / % + - + - = += -= *= /= %= 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、自增自減運算,+ -是單目運算符 有前綴和后綴兩種形式 前綴形式: 先自增(自減)再引用; 后綴形式: 先引用再自增(自減); 功能: 前綴形式 + a 等價于 a = a + 1 - a 等價于 a = a 1 后綴形式 a + 等價于 a = a + 1 a - 等價于 a = a 1,表達(dá)式的值會不同,例如 當(dāng) a5 時
17、+a 表達(dá)式的值為 6,且 a6 a+ 表達(dá)式的值為5 ,且 a6 b=+a 等價于 a=a+1; b=a 表達(dá)式的值為6,且 a=6, b=6 b=a+ 等價于 b=a; a=a+1 表達(dá)式的值為5,且 a=6, b=5,說明:,+ 和 - 的運算對象只能是變量(或運算結(jié)果是變量的表達(dá)式), 不能是常量(或運算結(jié)果是數(shù)值的表達(dá)式)。 例如: 5+、(a+2)+ 不合法。 具有右結(jié)合性,結(jié)合方向為從右到左。 例如: a+ 等價于 -(a+) 如果有多個運算符連續(xù)出現(xiàn)時,C系統(tǒng)盡可能多的從左到右將字符組合成一個運算符 例如: i + j 等價于 ( i+)+j -i+-j 等價于 -(i+)+(
18、-j),main( ) int a=5; printf(%d %dn,a,a+ ); ,說明(續(xù)):,對函數(shù)參數(shù)的求值順序: Turbo C系統(tǒng)先計算最右邊的參數(shù)值,再依次計算左面的參數(shù)值。,【例2.3】有多個函數(shù)參數(shù)且為同一變量自增的運算處理。,輸出結(jié)果: 6 5,運行例2.3,說明(續(xù)):,【例2.4】有多個函數(shù)參數(shù)且為同一變量多次自增的運算處理。,main( ) int a=5; printf(%d%dn,a,(a+)+( a+); ,輸出結(jié)果: 7 11,運行例2.4,特殊的:設(shè)i=3,j=4,k=i+j, k= i= j=,再看幾個例子: 如:設(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)系運算符:= = != 2、關(guān)系表達(dá)式:用關(guān)系運算符將表達(dá)式
20、連接起來的式子 優(yōu)先級: (= )( = != ) 結(jié)合性:自左至右; 表達(dá)式的值: 若為真,則結(jié)果為1; 若為假,則結(jié)果為0。,35 值為: 32 值為: 設(shè)x=-2; -3x-1 值為: 設(shè)x=1; 2x4 值為:,例如,二、關(guān)系運算符和關(guān)系表達(dá)式,求如下關(guān)系表達(dá)式的值:,0,0,0,1,算術(shù)運算符優(yōu)先級高于關(guān)系運算符 3+(43)*4 值為: 3+43*4 值為,3,1,注意,不能用數(shù)學(xué)里習(xí)慣的關(guān)系運算符連用表示區(qū)間關(guān)系!,2、邏輯表達(dá)式:用邏輯運算符將表達(dá)式連接起來的式子 優(yōu)先級: ! float b=3.5; !a ( ) !(a 0) ( ) (a 0) ( ),例如,0,1,1,
21、0,0,0,1,1,0,0,0,1,例如表達(dá)式運算如下:,混合優(yōu)先級: ! 高 算術(shù)運算符 關(guā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á)式一般用于控制語句中的條件:,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); 以上兩個printf語句結(jié)果均為 。,例如,3、求字節(jié)運算符: sizeof 作用:求得變量或某種數(shù)據(jù)類型所需的字節(jié)數(shù)。,2,4,C語言允許整型、實型、字符型數(shù)據(jù)
溫馨提示
- 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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2026年彈性設(shè)計在綠色施工中的應(yīng)用
- 市政配套專題匯報
- 2026年電氣故障處理與應(yīng)急預(yù)案
- 2026春招:西藏航空真題及答案
- 醫(yī)療信息化的禮儀與操作規(guī)范
- 2026年廣西生態(tài)工程職業(yè)技術(shù)學(xué)院高職單招職業(yè)適應(yīng)性測試備考試題有答案解析
- 2026年貴州農(nóng)業(yè)職業(yè)學(xué)院單招綜合素質(zhì)筆試模擬試題帶答案解析
- 個性化醫(yī)療與基因治療技術(shù)
- 2026年貴州工業(yè)職業(yè)技術(shù)學(xué)院單招職業(yè)技能筆試備考題庫帶答案解析
- 護(hù)理安全管理與應(yīng)急預(yù)案制定與實施策略
- 全球AI應(yīng)用平臺市場全景圖與趨勢洞察報告
- 2026.05.01施行的中華人民共和國漁業(yè)法(2025修訂)課件
- 維持性血液透析患者管理
- 2025年大學(xué)大四(臨床診斷學(xué))癥狀鑒別診斷試題及答案
- 2025年消控員初級證試題及答案
- 人力資源調(diào)研報告
- 幼兒園食堂試卷(含答案)
- 2026年北京公務(wù)員考試試題及答案
- 《房屋市政工程第三方安全巡查服務(wù)標(biāo)準(zhǔn)》
- 中鋁中州礦業(yè)有限公司禹州市方山鋁土礦礦山地質(zhì)環(huán)境保護(hù)和土地復(fù)墾方案
- 呼吸科規(guī)培疑難病例討論
評論
0/150
提交評論