第三章(北理工)-數(shù)據(jù)類型_第1頁
第三章(北理工)-數(shù)據(jù)類型_第2頁
第三章(北理工)-數(shù)據(jù)類型_第3頁
第三章(北理工)-數(shù)據(jù)類型_第4頁
第三章(北理工)-數(shù)據(jù)類型_第5頁
已閱讀5頁,還剩43頁未讀 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、北京理工大學(xué) /,數(shù)據(jù)類型 與運算規(guī)則,第一節(jié) 數(shù)據(jù)與數(shù)據(jù)類型 第二節(jié) C語言的基本數(shù)據(jù)類型及其表示 第三節(jié) 運算及運算規(guī)則 第四節(jié) 應(yīng)用實例,程序是用來對數(shù)據(jù)進行處理的,數(shù)據(jù)是所要處理的對象,而運算符是施加給這些數(shù)據(jù)的操作。 例如求圓的周長,寫有如下程序語句: cm = 2 * 3 .1 4 1 5 9 * r; 其中 cm、r、2、3.14159 是參加運算的數(shù)據(jù),而 * 、= 是要進行的運算的符號。 手工計算時,根據(jù)給定的半徑 r 就可以計算出圓的面積。,一、什么是數(shù)據(jù)和數(shù)據(jù)類型,第一節(jié) 數(shù)據(jù)與數(shù)據(jù)類型,計算機完成上述計算,首先要解決數(shù)據(jù)存放問

2、題: 1.輸入的半徑 r 、運算的結(jié)果 cm 事先要給它們留好位置。留多大的地方來存放它們? 2.還要知道它們被存放在計算機內(nèi)存的什么地方? 3.數(shù)據(jù) 2 和 3.14159 與 r 、cm 不一樣,它們是在編寫程序時就給出確定的值,在運算過程中不會改變。這樣的數(shù)計算機應(yīng)該怎么處理? 4.數(shù) 2 和 3.14159 一個是整數(shù)、一個是小數(shù),計算機存放它們是需要不需要區(qū)別?,第一節(jié) 數(shù)據(jù)與數(shù)據(jù)類型,數(shù)據(jù)類型 將數(shù)據(jù)分為不同的類型,來確定在計算機內(nèi)存中存放空間的大小和存放的形式等。 C語言的數(shù)據(jù)類型分為基本類型和構(gòu)造類型,規(guī)定了基本數(shù)據(jù)類型的名稱、數(shù)據(jù)的長度、格式、存取規(guī)則等;構(gòu)造類型是在基本類型

3、基礎(chǔ)上組合而成,以滿足編程的需要。,第一節(jié) 數(shù)據(jù)與數(shù)據(jù)類型,變量 在程序運行過程中,其值改變的數(shù)據(jù),稱之為變量,給變量一個名稱,就是變量名。 變量名和內(nèi)存中的存儲單元相對應(yīng)。 編寫程序時通過變量名來存、取存儲單元。 前例中 cm、r 就是變量名。 常量 在程序運行過程中其值不改變的數(shù)據(jù),是常量。 前例中 2、3.14159 就是變量。,二、變量和常量,第一節(jié) 數(shù)據(jù)與數(shù)據(jù)類型,數(shù)據(jù)類型,基本類型,構(gòu)造類型,整型 int,字符型 char,實型(浮點型),枚舉類型 enum,指針類型,空類型(無值類型) void,數(shù)組類型,結(jié)構(gòu)類型 struct,聯(lián)合類型 union,單精度實型 float,雙精

4、度實型 double,三、 C語言的數(shù)據(jù)類型的種類,第一節(jié) 數(shù)據(jù)與數(shù)據(jù)類型,本節(jié)介紹各種數(shù)據(jù)類型的名稱、存放的長度、表示數(shù)的范圍、各種數(shù)據(jù)類型變量的說明格式、初始化、常量的表示方法以及使用中的注意事項等。,重點和難點: 1. 整型數(shù)據(jù)表示數(shù)的范圍。 2. 實型數(shù)據(jù)的有效數(shù)字。 3. 字符和字符串的區(qū)別。 轉(zhuǎn)義字符的概念。,第二節(jié) C語言的基本數(shù)據(jù)類型,整型數(shù)據(jù)以二進制補碼形式存儲,類型說明符 長度 數(shù)的范圍 基本型 int 2字節(jié) -3276832767 短整型 short 2字節(jié) -215215-1 長整型 long 4字節(jié) -231231-1 無符號整型 unsigned 2字節(jié) 0655

5、35 無符號短整型 unsigned short 2字節(jié) 065535 無符號長整型 unsigned long 4字節(jié) 0232-1,一、整型數(shù)據(jù),第二節(jié) C語言的基本數(shù)據(jù)類型,int型數(shù)的表示范圍: 二進制 16bit (2Byte)。,0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1,=215-1=32767,0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1,0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1,1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0,=1,=3,例 C3_201,問題:上數(shù)再加1是多少?,=-215=-327

6、68,int型表示數(shù)的范圍:- 32768 32767,例 3_202,使用中注意數(shù)的范圍,int型整數(shù)的最大值,int型整數(shù)的最小值,第二節(jié) C語言的基本數(shù)據(jù)類型,45678 ? 先看二進制是多少:1011 0010 0110 1110,輸出十進制數(shù)絕對值是:19858 因為原來最高位是“1”, 所以輸出:-19858 。 注意數(shù)的表示范圍。,輸出時: 先求反,第二節(jié) C語言的基本數(shù)據(jù)類型,機內(nèi)保存:,?,末位加一,整型數(shù)在內(nèi)存是如何存放的: 例如: long y = 0 x12345678 ; 此數(shù)共4個字節(jié),第二節(jié) C語言的基本數(shù)據(jù)類型,整型變量的說明格式: 類型說明符 變量列表; 例如

7、:int i, j = 1; long k, m; 變量的初始化: 允許在說明變量的時候?qū)ψ兞抠x初值。 問題:僅說明了變量以后,變量值的情況。 整型常量的類型: 1.在整型數(shù)表示范圍之內(nèi),根據(jù)值大小默認類型。 2.在常量后面加l或L,則認為它是long int型。 例如:123L,0L,432l 都是long int型常量。,第二節(jié) C語言的基本數(shù)據(jù)類型,TC,整型常量的不同數(shù)值表示方法: 10進制:09 8進制:07,以0開頭 16進制:09,AF/af,以0 x或0X開頭 例如: 100 -8 0 +123 010 024 0100 0 x38 0 x10 0X10 0XFF 0 x0a,

8、第二節(jié) C語言的基本數(shù)據(jù)類型,類型說明符 長度 數(shù)的范圍 有效數(shù)字 單精度型 float 4字節(jié) 10-38 1038 7位 雙精度型 double型 8字節(jié) 10-308 10308 15位,二、實型數(shù)據(jù),有效數(shù)字的意義?,單精度實型,尾數(shù),階碼,2-23 = |尾數(shù)| = 1-2-23,0.000,000,12 = |尾數(shù)| = 0.999,999,88,例C3_203,階碼的符號位,尾數(shù)的符號位,數(shù)的范圍的意義?,2-128= |階碼| = 2127,2.9*10-39 = |階碼| = 1.7*1038,第二節(jié) C語言的基本數(shù)據(jù)類型,實型常量的表示方法 十進制形式 1.0 1. +12

9、.0 -12.0 0.0 指數(shù)形式 1e3 1.8e-3 -123e-6 -.1e-3,第二節(jié) C語言的基本數(shù)據(jù)類型,字符型說明符: char 字符型常量的表示:用單引號括起來的單個字符。 字符常量:A g 1 # 字符型數(shù)據(jù)的存儲格式:ASCII碼。(見書P384) 例如:char c1,c2,c3,c4; c1=A; (65) c2=g;(103) c3=1; (48) c4=#; (35),三、字符型數(shù)據(jù),第二節(jié) C語言的基本數(shù)據(jù)類型,字符串常量的表示:用雙引號括起來的單個字符。 ”This is C string” 串長16 ”a” 串長1 ” ” (空格)串長1 ” (不含空格)串長

10、0,第二節(jié) C語言的基本數(shù)據(jù)類型,0,字符形式 功能 使用舉例 0 字符串結(jié)束標(biāo)志 見第六章字符數(shù)組 n 換行 printf(”n”); t 橫向跳格 printf(”t”); v 豎向跳格 printf(”v”); b 退格 printf(”b”); r 回車 printf(”r”); f 走紙換頁 printf(”f”); 反斜杠 printf(”); 單引號 printf(”); ddd 用8進制表示字符 a=5;b=60;c=101; xhh 用16進制表示字符 a=xe; b=x41;,例C3_204,第二節(jié) C語言的基本數(shù)據(jù)類型,轉(zhuǎn)義字符,自動類型轉(zhuǎn)換,四、各類數(shù)值型數(shù)據(jù)間的混合運

11、算,double,float,long,unsigned,int,char,精度高,精度低,運算過程中的類型轉(zhuǎn)換 (運算器中數(shù)據(jù)存儲) 不是變量本身 數(shù)據(jù)類型的轉(zhuǎn)換,第二節(jié) C語言的基本數(shù)據(jù)類型,例: 2.0 + 1 / 2; 表達式的值 ?,F的類型 ?,(類型說明符)變量,int double double,double,強制類型轉(zhuǎn)換,2.0,已知:int i; long e; float f; douible d; f = 10 + a + i * f - d / e,double,第二節(jié) C語言的基本數(shù)據(jù)類型,本節(jié)難點: 1. 整型數(shù)的表示范圍。 2. 實型數(shù)的有效值。 3. 轉(zhuǎn)義字符

12、。 4. 類型轉(zhuǎn)換。,第二節(jié) C語言的基本數(shù)據(jù)類型,按運算類型分類 1. 算術(shù)運算符 2. 關(guān)系運算符 3. 邏輯運算符 4. 位運算符 5. 賦值與賦值組合運算符 6. 自增自減運算符 7.其它運算符 按運算對象的數(shù)目分類 單目運算 雙目運算 三目運算,一、運算符簡介,第三節(jié) 運算及運算規(guī)則,+ 加法運算、正值運算 (12) - 減法運算、負值運算 (12) * 乘法運算(13) / 除法運算(13) % 求余運算(13) (結(jié)合性 ),二、算術(shù)運算符,1.參加運算的對象都是int型,其結(jié)果截取為int型。 10/3 11/3 1/2 10.0/31./2 10/5*3 10/(5*3) 2

13、.求余運算的對象必須是整型。 10 % 3 9 % 3 10 % 3 10 % 3,10 / 3 值是 3 11 / 3 值是 3 1 / 2 值是 0 1. / 2 值是 0.500000 10.0 / 3 值是 3.333333 10 / 5*3 值是 6 10 / (5*3) 值是 0 10 % 3 值是 1 9 % 3 值是 0 10 % 3 值是 -1 10 % 3 值是 1,第三節(jié) 運算及運算規(guī)則,優(yōu)先級 1. C語言規(guī)定了各種運算的優(yōu)先級。(P366) 2. 優(yōu)先級的規(guī)定符合思維習(xí)慣。 例如在算術(shù)運算中,先 * / 后 + -。 3. 利用( )提高程序的可讀性。 結(jié)合性 運算符

14、號和運算對象的結(jié)合方向。 例如算術(shù)運算符的結(jié)合性是從左向右,所以7-5是用7減去5得2,而不是5減去7得-2。,三、運算符的優(yōu)先級和結(jié)合性,第三節(jié) 運算及運算規(guī)則,已知:int i=3; long e=4; float f=1.5; douible d=2.0; f = 10 + a + i * f - d / e f = 107 + 4.5 - 0.5 f = 111.5 - 0.5 f = 111.0,第三節(jié) 運算及運算規(guī)則, 大于 (10) = 大于等于(10) 小于 (10) = 小于等于(10) = 等于 (9) != 不等于 (9) (結(jié)合性 ),四、關(guān)系運算符,1. 關(guān)系運算的結(jié)

15、果應(yīng)該是邏輯值。 2. C語言將邏輯值做數(shù)值化處理, 數(shù)值 0 表示邏輯非, 數(shù)值非零表示邏輯真, (數(shù)值1)。 關(guān)系表達式 75 的值是 1, 關(guān)系表達式 57 的值是 0。 3. 實型數(shù)勿直接用0去比較。,第三節(jié) 運算及運算規(guī)則,a b !a !b a a += a -= a * a; (1) a = a - a * a = -132 (2) a = a + ( -132 ),a += b a = a + b,第三節(jié) 運算及運算規(guī)則,八、自增自減運算符,+ + 自增 (14) - - 自減 (14) (結(jié)合性 ),自增(自減)是單目運算符。 只能對 int、char、long 運算。 自增

16、(自減)有前綴和后綴之分。 前綴形式: 先自增(自減)再引用; 后綴形式: 先引用再自增(自減); 功能: 前綴形式 + + x x = x + 1 x x = x 1 后綴形式 x + + x = x + 1 x x = x 1,第三節(jié) 運算及運算規(guī)則,(1) + +i; i+ +; 因為在表達式中沒有其它運算,結(jié)果一樣。 (2) x =1; y = + + x; 運算后結(jié)果: x = 2,y = 2 y = + + x; x = x + 1; y = x; 在做賦值運算之前,x 先加1,然后將 x 賦給 y。 (3) x =1; y = x + +; 運算后結(jié)果: x = 2,y = 1

17、y = x + +; y = x; x = x + 1; 先將 x 賦值給 y ,然后 x 再加1。 前、后綴以表達式為單位,與其他運算比較執(zhí)行時間前后。,第三節(jié) 運算及運算規(guī)則,已知:int x = 2, y = 5, z; (每句都使用變量的初值) z = + + x; 則: x = 3, z = 3 z = + + x * + + y; 則: x = 3, y = 6, z = 3 * 6 = 18 z = x + + * + + y; 則: x = 3, y = 6, z = 2 * 6 = 12 z = + + x * y + +; 則: x = 3, y = 6, z = 3 *

18、5 = 15 z = x + + * y + +; 則: x = 3, y = 6, z = 2 * 5 = 10 z = + + x * + + x; 則: x = 4, z = 4 * 4 = 16,第三節(jié) 運算及運算規(guī)則,已知:int i = 1,j = 2 ,k; k=i + + + j; C語言處理運算符時,遵循自左向右組合的原則,兩個+號是一個運算符,故處理成(i+) + j。 語句:k = i+j; 編譯不能通過。原因是它將前兩個+處理成自增,接下來又將兩個+號處理為自增,故不合語法。編程者可用空格或括號來表示正確的含義:k = i+ + +j ; (一般不要用這樣的語句)。,例C3_301

溫馨提示

  • 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)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論