《c語言程序設(shè)計》第2章.ppt
《《c語言程序設(shè)計》第2章.ppt》由會員分享,可在線閱讀,更多相關(guān)《《c語言程序設(shè)計》第2章.ppt(61頁珍藏版)》請在裝配圖網(wǎng)上搜索。
第二章基本數(shù)據(jù)類型、運算符和表達式,C語言程序設(shè)計,2,本章主要內(nèi)容,本章介紹C語言的基礎(chǔ),包括:數(shù)據(jù)類型運算符和表達式均是程序設(shè)計的基本知識為什么討論這些知識?,,通常程序要對數(shù)據(jù)進行操作處理:處理的對象是數(shù)據(jù)通過運算符和表達式進行操作,3,例如:,【例2.1】計算圓的面積,半徑為5cm。程序如下:,main(){floatr,area;r=5;area=3.14*r*r;printf("%f\n",area);},運算結(jié)果是輸出圓的面積:78.500000,程序中用到的數(shù)據(jù):r、area、5、3.14對數(shù)據(jù)進行的運算:*、=,例jc2_1,4,分析:,計算機操作處理時,要完成以下工作:在內(nèi)存中給半徑r和運算結(jié)果area開辟存儲空間,存放它們的值。應(yīng)該留多大的地方來存放它們的值?數(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ù)據(jù),1.整型數(shù)據(jù)的類型基本整型數(shù)據(jù)int,分配2Byte短整型數(shù)據(jù)shortint,分配2Byte長整型數(shù)據(jù)longint,分配4Byte整型數(shù)據(jù)均以二進制補碼形式存儲,問題:為什么要采用補碼?如何表示?,7,計算機中正、負(fù)數(shù)的表示,例如:109=(1101101)2要區(qū)別:+109和-109方法是:將符號也數(shù)碼化即:正的符號+用0表示負(fù)的符號-用1表示,∴計算機中的數(shù)表示方法是:符號位+二進制數(shù)值(以8bit為例)+109→+1101101→01101101-109→-1101101→11101101,8,問題:計算機計算復(fù)雜化,例如計算:(-19)+(+22)10010011+00010110,解決的方法是:使用反碼或補碼的表示方法(按前述表示的編碼稱為原碼),即能將減法一律轉(zhuǎn)換為加法。,需要判斷符號是否相同:如果相同,結(jié)果符號不變,并進行絕對值相加如果不同,結(jié)果取絕對值大的數(shù)的符號,并進行絕對值相減,9,原碼、反碼和補碼,正數(shù):原碼、反碼、補碼相同符號位為0,數(shù)值為對應(yīng)的二進制數(shù)。+109,[01101101]原=[01101101]反=[01101101]補負(fù)數(shù):原碼符號位為1,數(shù)值為絕對值的二進制數(shù)。-109[11101101]原反碼符號位為1,數(shù)值為絕對值的二進制數(shù)各位變反。-109[10010010]反補碼符號位為1,數(shù)值為絕對值的二進制數(shù)各位變反加1。-109[10010011]補,10,2.有符號和無符號整型數(shù)據(jù),有符號的整型數(shù)據(jù)signedint無符號的整型數(shù)據(jù)unsignedint區(qū)別是將最高位看作符號位還是數(shù)據(jù)位,例如:1111111110101000作為有符號數(shù)使用時,最高為符號位為負(fù)數(shù),值是:-88(再求一次補)作為無符號數(shù)使用時,最高為數(shù)據(jù)位為無符號的數(shù),值是:65448,11,例如:,main(){unsignedintm;m=65448;printf("\nm=%d\n",m);printf("m=%u\n",m);},例jc2_a,輸出結(jié)果:m=-88m=65448,按有符號數(shù)輸出,按無符號數(shù)輸出,12,整型數(shù)據(jù)的類型及規(guī)定,方括號表示可選項int分配2Byte,long分配4Byte,13,2.1.2實型數(shù)據(jù),1.實型數(shù)據(jù)的類型單精度實型數(shù)據(jù)float,分配4Byte雙精度實型數(shù)據(jù)double,分配8Byte2.實型數(shù)據(jù)的存儲,單精度實型,指數(shù)部分,小數(shù)部分,,,,,小數(shù)的符號位,指數(shù)的符號位,14,實型數(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ù)范圍更大。,有效數(shù)字的意義?,例jC2_a,15,2.1.3字符型數(shù)據(jù),字符型數(shù)據(jù)char,分配1Byte字符型數(shù)據(jù)是指字母、數(shù)字、各種符號等用ASCII值表示的字符例如a是一個char類型數(shù)據(jù),稱作字符常量,存儲:,01100001,2.1.4空類型,空類型void通常與指針或函數(shù)結(jié)合使用,16,2.2常量、變量與標(biāo)準(zhǔn)函數(shù),主要內(nèi)容:常量變量標(biāo)準(zhǔn)庫函數(shù),17,2.2.1常量,在運行程序的過程中值保持不變的量1.整型常量十進制:0~9八進制:0~7,以0開頭十六進制:0~9,A~F/a~f,以0 x或0X開頭,例如:100-80+12301002401000730 x380 x100X100XFF0 x0a,18,1.整型常量,整型常量的類型:根據(jù)值大小默認(rèn)類型。整型常量后面加l或L,則認(rèn)為是longint型例如:123L、0L、432l、0 x100l,注意:十六進制常量中可以使用大寫字母A~F,也可以使用小寫字母a~f。八進制常量中不能出現(xiàn)數(shù)字8或9例如:018、0921非法,19,2.實型常量,十進制形式1.01.+12.0-12.00.0指數(shù)形式1e31.8e-3-123E-6-.1E-3,指數(shù)只能是整數(shù),而尾數(shù)則可以是整數(shù)也可以是小數(shù),無論指數(shù)或尾數(shù)均不能省略例如:1e、E.5、E-3非法實型常量的類型:默認(rèn)為double型,后面加F(或f),則強調(diào)表示該數(shù)是float類型例如:3.5f、1e2F,20,3.字符型常量,可視字符常量單引號括起來的單個可視字符例如:a、A、+、3、等轉(zhuǎn)義字符常量單引號括起來的\與可視字符組合,例如:,21,4.字符串常量,用雙引號括起的一個字符序列例如:"ABC"、"123"、"a"、"\n\t""\nGoodmorning"字符串常量的長度:所包含的字符個數(shù)字符串常量的存儲方式:,所占存儲單元數(shù):串長度+1例如:,字符串結(jié)束標(biāo)記,,,22,5.符號常量,以標(biāo)識符來代表的常量事先編譯預(yù)處理命令define定義編譯時先由系統(tǒng)替換為它所代表的常量,再進行編譯例如:,#defineLEN2.5main(){floata,b;a=2*3.14*LEN;b=3.14*LEN*LEN;printf("a=%f,b=%f\n",a,b);},編譯前系統(tǒng)進行替換,23,5.符號常量,main(){floata,b;a=2*3.14*2.5;b=3.14*2.5*2.5;printf("a=%f,b=%f\n",a,b);},define是編譯預(yù)處理命令,必須以“#”開頭編譯預(yù)處理命令在第7章討論。,替換為,,,24,2.2.2變量,1.變量的有關(guān)概念在程序運行過程中,其值改變的數(shù)據(jù),稱為變量,變量用標(biāo)識符表示,稱為變量名。變量必須“先定義后使用”系統(tǒng)為變量分配存儲單元,存儲變量的值。編寫程序時通過變量名來存、取變量值。,例如:有變量a它的值是510,25,2.變量定義,變量定義的一般格式:數(shù)據(jù)類型說明符變量列表;例如:inti,j;longk,m;floatx,y;charch1,ch2;,,必須使用合法的標(biāo)識符作變量名不能使用關(guān)鍵字為變量命名,26,3.變量的初始化:,允許在說明變量的時候?qū)ψ兞抠x初值。例如:inta=5,b=10+2;doublex=23.568,y;charch1=a,ch2=66,ch3=\142;表示定義變量并對變量存儲單元賦值。錯誤的初始化:inta=3+b,b=5;floatm=n=23.16;,27,2.2.3標(biāo)準(zhǔn)庫函數(shù),由C編譯系統(tǒng)定義的一種函數(shù),存放在系統(tǒng)函數(shù)庫中,用戶可以根據(jù)需要隨時調(diào)用常用函數(shù)如:printf、scanf、fabs、sqrt、sin、(常用數(shù)學(xué)函數(shù)參見教材P30表2.5)函數(shù)調(diào)用形式:函數(shù)名([參數(shù)表])例如:putchar(a)sqrt(x),例jc2_3,,28,2.3運算符和表達式,主要內(nèi)容:算術(shù)運算符和算術(shù)表達式賦值運算符和賦值表達式關(guān)系運算符和關(guān)系表達式邏輯運算符和邏輯表達式位運算符和位運算表達式條件運算符和條件表達式逗號運算符和逗號表達式其他運算符及其運算,29,運算符的有關(guān)概念,作用:對運算對象完成規(guī)定的操作運算類型:按運算對象分:單目、雙目、三目按功能分:算術(shù)、賦值、關(guān)系、邏輯條件、逗號、位、其他,30,運算符的優(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ī)定見教材P297附錄B),31,本章涉及的運算符,+-*/%++--+-=+=-=*=/=%=a=a+1表達式的值為5,且a=6,b=5,37,說明:,++和--的運算對象只能是變量(或運算結(jié)果是變量的表達式),不能是常量(或運算結(jié)果是數(shù)值的表達式)。例如:5++、(a+2)++不合法。具有右結(jié)合性,結(jié)合方向為從右到左。例如:–a++等價于-(a++)如果有多個運算符連續(xù)出現(xiàn)時,C系統(tǒng)盡可能多的從左到右將字符組合成一個運算符例如:i+++j等價于(i++)+j-i+++-j等價于-(i++)+(-j),38,main(){inta=5;printf("%d%d\n",a,a++);},說明(續(xù)):,對函數(shù)參數(shù)的求值順序:TurboC系統(tǒng)先計算最右邊的參數(shù)值,再依次計算左面的參數(shù)值。,【例2.5】有多個函數(shù)參數(shù)且為同一變量自增的運算處理。,輸出結(jié)果:65,運行例2.5,39,說明(續(xù)):,【例2.6】有多個函數(shù)參數(shù)且為同一變量多次自增的運算處理。,main(){inta=5;printf("%d%d\n",a,(a++)+(a++));},輸出結(jié)果:711,運行例2.6,40,賦值運算,賦值運算符(右結(jié)合)=+=-=*=/=%=printf("%d%d\n",a},輸出結(jié)果:8102-11,0000000000001010printf("%d%d\n",a>b-1);},輸出結(jié)果:409,運行jc2_c,請自行分析運行結(jié)果,53,條件表達式運算,條件運算符:?:條件表達式的一般形式表達式1?表達式2:表達式3例如:m=10charch;可以對變量a、ch、student進行doublex;printf("%d%d",sizeof(int),sizeof(a));printf("%d%d",sizeof(double),sizeof(x));printf("%d%d\n",sizeof(float),sizeof(char));},輸出結(jié)果:228841,運行jc2_d,59,2.4運算中數(shù)據(jù)類型的轉(zhuǎn)換,2.4.1數(shù)據(jù)類型的自動轉(zhuǎn)換轉(zhuǎn)換原則:,自動將精度低、表示范圍小的運算對象類型向精度高、表示范圍大的運算對象類型轉(zhuǎn)換,例如有定義:inta;charch;表達式:a-ch*2+35La-ch*2+35.,60,2.賦值運算中的類型轉(zhuǎn)換,=小數(shù)部分自動補0,=自動舍去實型表達式的小數(shù)部分(注意不進行四舍五入)==自動截取表達式值的低字節(jié)賦值,舍去高字節(jié)==自動給高字節(jié)補0或補1,61,2.4.2數(shù)據(jù)類型的強制轉(zhuǎn)換,強制轉(zhuǎn)換的一般形式(類型名)表達式例如:(int)(b+3*x)%31/(float)a+6,,注意:(float)22/5與(float)(22/5)不同錯誤的類型轉(zhuǎn)換:(int)b=a+5b=int(3*a),- 1.請仔細(xì)閱讀文檔,確保文檔完整性,對于不預(yù)覽、不比對內(nèi)容而直接下載帶來的問題本站不予受理。
- 2.下載的文檔,不會出現(xiàn)我們的網(wǎng)址水印。
- 3、該文檔所得收入(下載+內(nèi)容+預(yù)覽)歸上傳者、原創(chuàng)作者;如果您是本文檔原作者,請點此認(rèn)領(lǐng)!既往收益都?xì)w您。
下載文檔到電腦,查找使用更方便
14.9 積分
下載 |
- 配套講稿:
如PPT文件的首頁顯示word圖標(biāo),表示該PPT已包含配套word講稿。雙擊word圖標(biāo)可打開word文檔。
- 特殊限制:
部分文檔作品中含有的國旗、國徽等圖片,僅作為作品整體效果示例展示,禁止商用。設(shè)計者僅對作品中獨創(chuàng)性部分享有著作權(quán)。
- 關(guān) 鍵 詞:
- c語言程序設(shè)計 語言程序設(shè)計
鏈接地址:http://m.appdesigncorp.com/p-11498765.html