C語言課件第2章數(shù)據(jù)類型和表達式.ppt_第1頁
C語言課件第2章數(shù)據(jù)類型和表達式.ppt_第2頁
C語言課件第2章數(shù)據(jù)類型和表達式.ppt_第3頁
C語言課件第2章數(shù)據(jù)類型和表達式.ppt_第4頁
C語言課件第2章數(shù)據(jù)類型和表達式.ppt_第5頁
已閱讀5頁,還剩56頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、第二章數(shù)據(jù)類型和表達式,C語言編程,第二章,本章的主要內(nèi)容,本章介紹了C語言的基礎(chǔ),包括:數(shù)據(jù)類型運算符和表達式是編程的基礎(chǔ)知識,為什么要討論這些知識?通常,程序應(yīng)該操作和處理數(shù)據(jù):處理的對象是由操作符和表達式操作的數(shù)據(jù),3例如,例2.1計算半徑為5厘米的圓的面積。程序如下:主()浮動r,區(qū)域;r=5;面積=3.14 * r * rprintf (%fn,面積);計算結(jié)果是輸出圓的面積:78.500000,程序中使用的數(shù)據(jù):r,面積,5,3.14。數(shù)據(jù)的計算:*,=,4,分析:當計算機運行和處理時,有必要完成以下任務(wù):在內(nèi)存中為半徑r和計算結(jié)果區(qū)域打開存儲空間并存儲它們的值。應(yīng)該留出多少空間來

2、存儲它們的價值?數(shù)據(jù)5和3.14不同于R和area,因為它們在程序編寫時被賦予了確定的值,并且在操作過程中不會改變。如何處理這樣一臺數(shù)字計算機?當用計算機存儲時,整數(shù)5和小數(shù)3.14之間有區(qū)別嗎?涉及數(shù)據(jù)類型的基本知識,5。C語言的數(shù)據(jù)類型和C數(shù)據(jù)類型。本章討論基本類型數(shù)據(jù)的類型,6,2.1.1整數(shù)數(shù)據(jù)和1整數(shù)數(shù)據(jù),包括基本整數(shù)數(shù)據(jù)int、分配2字節(jié)短整數(shù)數(shù)據(jù)短int、分配2字節(jié)長整數(shù)數(shù)據(jù)長int和分配4字節(jié)整數(shù)數(shù)據(jù),所有這些都以二進制補碼的形式存儲。問題:我們?yōu)槭裁匆醚a語?如何表達?7,在計算機中表示正數(shù)和負數(shù),例如:109 (1101101)2區(qū)分:109和109該方法是將符號數(shù)字化,即

3、正符號用0表示,負符號用1表示,計算機中的數(shù)字表示方法是:符號位二進制值(以8位為例)109 110 1101 0110 1101 109 110 1101 1110 1101,8。問題是計算機計算復(fù)雜,例如,(-19) (22) 1001 0011 0001 0110。解決方法是:判斷符號是否相同:如果相同,結(jié)果的符號保持不變,絕對值相加;如果它們不同,則取絕對值較大的數(shù)字符號,并減去絕對值,9,原碼、補碼和補碼,正數(shù):原碼、補碼和補碼的相同符號為0,數(shù)值為相應(yīng)的二進制數(shù)。109,01101101 original=01101101 reverse=01101101補碼負數(shù):原碼的符號位為1

4、,該值為絕對值的二進制數(shù)。10911101101原始反碼符號位為1,帶有絕對值的二進制數(shù)被反轉(zhuǎn)。10910010010補碼的符號位為1,其值為絕對值的二進制數(shù)改變1。10910010011增補,10,2。有符號和無符號整數(shù)數(shù)據(jù),有符號整數(shù)數(shù)據(jù)區(qū)別在于最高位被視為符號位還是數(shù)據(jù)位。例如,當1111110101000用作有符號數(shù)時,最高符號位為負。該值為:-88(再次補碼),當用作無符號數(shù)時,最高值為帶數(shù)據(jù)位的無符號數(shù),該值為:65448,11,例如:main()無符號int m;m=65448printf(nm=%dn,m);printf(m=%un,m);輸出結(jié)果:m=-88 m=65448,

5、按有符號數(shù)和無符號數(shù)輸出,12,整數(shù)數(shù)據(jù)類型和規(guī)則,方括號表示可選整數(shù)分配2字節(jié),長分配4字節(jié),13,2.1.2實數(shù)數(shù)據(jù),1類型實數(shù)數(shù)據(jù),單精度實數(shù)數(shù)據(jù)浮點,4字節(jié)雙精度實數(shù)數(shù)據(jù)雙精度,分配存儲8字節(jié)2實數(shù)數(shù)據(jù),單精度實數(shù)數(shù)據(jù),索引部分,小數(shù)部分,十進制符號位,索引符號位,14,實數(shù)數(shù)據(jù)類型和規(guī)則。c標準沒有規(guī)定各種實際數(shù)據(jù)所占用的字節(jié)數(shù),也沒有規(guī)定特定小數(shù)和指數(shù)部分的位數(shù)。一般來說,小數(shù)部分位數(shù)較多,數(shù)據(jù)代表的有效位數(shù)較多,所以準確性較高;但是,如果索引部分有更多的數(shù)字,數(shù)據(jù)范圍將會更大。,有效數(shù)字的含義是什么?15,2.1.3字符數(shù)據(jù),字符,1字節(jié)字符數(shù)據(jù)的分配指的是字母、數(shù)字、各種符號和

6、其他用ASCII值表示的字符。例如,A是一種字符類型的數(shù)據(jù),它被稱為字符常量,存儲:0.1100001,2.1.4空類型,通常與指針或函數(shù)結(jié)合使用。16,2.2常量,變量和標準函數(shù),主要內(nèi)容:常量變量標準庫函數(shù),17,2.2.1常量,程序運行過程中值保持不變的量1整數(shù)常量十進制:09八進制:07,十六進制從0: 09開始,AF/af,從0 x或0X開始,例如:100-8 0 123 010 024 0100 0730x38 0X 10 0X 10 0X 10 0X ff0x 0A,18,1。整數(shù)常量,整數(shù)常量的類型:根據(jù)值大小的默認類型。如果在整數(shù)常量后加上l或l,則認為是長整型,例如:123

7、L,0L,432l,0 x100l。注意:十六進制常量中可以使用大寫字母af或小寫字母AF。數(shù)字8或9不能出現(xiàn)在八進制常量中,例如:018,0921是非法的,19,2。實數(shù)常數(shù),十進制1.0 1。12.0 -12.0 0.0指數(shù)形式1e3 1.8e-3 -123E-6 -.1E-3,指數(shù)只能是整數(shù),尾數(shù)可以是整數(shù)或小數(shù)。指數(shù)和尾數(shù)都不能省略,例如:1e,E5,E3。默認情況下,非法實數(shù)常量的類型是雙精度的,后跟f(或f),它強調(diào)數(shù)字是浮點型的,例如:3.5f,1e2F,20,3。字符常量??梢曌址A坑脝我柪ㄆ饋淼膯蝹€可視字符,例如:轉(zhuǎn)義字符常量A、A、3等。與單引號中的可視字符結(jié)合使用,如

8、:21,4。字符串常量,用雙引號括起來的字符序列,例如:ABC,123,A,nt nGood早晨字符串常量長度:字符串常量存儲模式中包含的字符數(shù):占用的存儲單元數(shù):字符串長度1,例如:字符串結(jié)束標記,22,5。符號常數(shù),由標識符表示的常數(shù)是預(yù)先編譯的。預(yù)處理命令定義的定義在編譯時被系統(tǒng)表示的常數(shù)代替,然后被編譯。例如,#定義LEN 2.5主()浮動a,b;a=2 * 3.14 * LENb=3.14 * LEN * LENprintf(a=%f,b=%fn,a,b);編譯前被系統(tǒng)替換,23,5。符號常數(shù),主()浮點a,b;a=2 * 3.14 * 2.5b=3.14 * 2.5 * 2.5pr

9、intf(a=%f,b=%fn,a,b);define是一個編譯預(yù)處理命令,它必須以“#”開頭,將在第7章中討論。替換為、24,2.2.2變量,1。變量的相關(guān)概念在程序運行過程中其值發(fā)生變化的數(shù)據(jù)稱為變量,由標識符表示,稱為變量名。使用前必須定義變量。系統(tǒng)為變量分配存儲單元并存儲它們的值。編寫程序時,變量值由變量名存儲和獲取。例如,有一個值為510,25,2的變量A。變量定義,變量定義的一般格式:數(shù)據(jù)類型描述符變量列表;例如:int i,j;long k,m;浮動x,y;char ch1,ch2、必須使用合法標識符作為變量名,并且不能使用關(guān)鍵字來命名變量。26,3。變量初始化:描述變量時,允許

10、給變量賦值初始值。例如:int a=5,b=10 2;雙x=23.568,y;char ch1=a,ch2=66,ch3=142意味著定義變量并將值分配給變量存儲位置。初始化錯誤:int a=3 b,b=5;浮子m=n=23.16,27,2.2.3標準庫函數(shù),一種由c編譯系統(tǒng)定義的函數(shù),存儲在系統(tǒng)庫函數(shù)中。用戶可以根據(jù)需要隨時調(diào)用常用函數(shù),如printf、scanf、fabs、sqrt、sin(參見教科書P418附錄中的常用數(shù)學(xué)函數(shù))。函數(shù)調(diào)用形式:函數(shù)名稱(參數(shù)表)如putchar(a) sqrt(x. 28,2.3運算符和表達式,主要內(nèi)容:算術(shù)運算符和算術(shù)表達式賦值運算符和賦值表達式關(guān)系運

11、算符和關(guān)系表達式邏輯運算符和邏輯表達式按位運算符和按位運算符條件運算符和條件表達式逗號運算符和逗號表達式其他運算符及其操作,29,運算符的相關(guān)概念,函數(shù):完成指定的操作數(shù)操作類型:按操作數(shù):單眼、雙目和三眼;按函數(shù):算術(shù)、賦值、關(guān)系、邏輯條件、逗號、位、其他、30;操作員的優(yōu)先級和組合;優(yōu)先級是指各種操作符號的操作優(yōu)先級順序;例如,算術(shù)運算優(yōu)先于關(guān)系算術(shù)運算。組合性是指操作數(shù)和操作數(shù)的組合方向,分為從左到右(左組合)和從右到左(右組合)。例如,算術(shù)運算符是左組合a-b 4賦值運算符是右組合A=B=5(見教材P41語言規(guī)定表2.5),31,本章涉及的運算符,-*/%-=-=*=/=%=A=1表達

12、式的值是5,a=6,B=5,37。描述:和-的操作數(shù)只能是變量(或有變量運算結(jié)果的表達式),不能是常量(或有數(shù)值運算結(jié)果的表達式)。例如:5。(a 2)是非法的。具有右綁定屬性,綁定方向從右向左。例如:A相當于-(a)如果多個操作符連續(xù)出現(xiàn),C系統(tǒng)將從左到右盡可能多的字符組合成一個操作符。例如,i j等于(i) j -i -j等于-(i) (-j),38,main()int a=5;printf(%d %dn,a,a);說明(續(xù)):功能參數(shù)評估順序:Turbo C系統(tǒng)先計算最右邊的參數(shù)值,然后依次計算左邊的參數(shù)值。示例2.5有多個函數(shù)參數(shù),同一變量是自增的。輸出結(jié)果:6 5,39,描述(續(xù)):

13、例2.6有多個函數(shù)參數(shù),同一變量多次自增。main()int a=5;printf(%d%dn,a,(a)(a);輸出結(jié)果:7 11,40,賦值操作,賦值運算符(右組合)=-=*=/=%=printf(%d %dn,a),輸出結(jié)果:8 102-11,0000 0000 1010 printf (%d% dn,ab-1),輸出結(jié)果:40 9,請自己分析運行結(jié)果,53,條件表達式操作,條件運算符:條件表達式表達式1的一般形式?表達式2 :表達式3示例:m=10個字符;你可以把變量a,ch和學(xué)生的x翻倍;printf(%d %d,sizeof(int),sizeof(a);printf(%d %d,sizeof(double),sizeof(x);printf(%d %dn,sizeof(float),sizeof(char);輸出結(jié)果:2 2 8 8 4 1,59,2.4運算中的數(shù)據(jù)類型轉(zhuǎn)換,2.4.1自動數(shù)據(jù)類型轉(zhuǎn)換原理:自動將低精度、小表示范圍的操作數(shù)類型轉(zhuǎn)換為高精度、大表示范圍的操作數(shù)類型,例如,有定義:int a;char ch表達式:a-ch*2

溫馨提示

  • 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)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論