C語言第2章數(shù)據(jù)類型.ppt
《C語言第2章數(shù)據(jù)類型.ppt》由會員分享,可在線閱讀,更多相關(guān)《C語言第2章數(shù)據(jù)類型.ppt(62頁珍藏版)》請在裝配圖網(wǎng)上搜索。
,第二章,數(shù)據(jù)類型、運算符與表達(dá)式,,本章要點,數(shù)據(jù)的描述規(guī)則數(shù)據(jù)的操作規(guī)則,,主要內(nèi)容,2.1C語言的數(shù)據(jù)類型2.2常量與變量2.3整型數(shù)據(jù)2.4浮點型數(shù)據(jù)2.5字符型數(shù)據(jù)2.6各類數(shù)值型數(shù)據(jù)間的混合運算2.7算術(shù)運算符和算術(shù)表達(dá)式2.8逗號運算符和逗號表達(dá)式,為什么要有不同的數(shù)據(jù)類型,例:學(xué)生信息管理姓名年齡成績張三2080.5李四2190.0趙五1976.6,為什么要指定數(shù)據(jù)類型?,1.不同類型的數(shù)據(jù)在內(nèi)存中占據(jù)不同長度的存儲區(qū)。2.不同類型的數(shù)據(jù)取值范圍不同。3.不同類型的數(shù)據(jù)有不同的操作。,2.1C的數(shù)據(jù)類型,C語言提供了以下一些數(shù)據(jù)類型。,數(shù)據(jù)類型,構(gòu)造類型,指針類型,空類型(無值類型)void,,2.2常量與變量,2.2.1常量在程序運行過程中,其值不能被改變的量稱為常量常量區(qū)分為不同的類型:,,整型100,125,-100,0實型3.14,0.125,-3.789字符型‘a(chǎn),‘b,‘2,,說明:符號常量為了使用方便,可用一個符號名來代表一個常量。,例2.1在程序中使用符號常量#definePRICE30#includevoidmain(){intnum,total;num=10;total=num*PRICE;printf(″total=%d\n″,total);},符號常量:用一個標(biāo)識符代表一個常量。符號常量的值在其作用域內(nèi)不能改變,也不能再被賦值。,運行結(jié)果:total=300,說明:程序中用#define命令行定義PRICE代表常量30,此后凡在本文件中出現(xiàn)的PRICE都代表30,可以和常量一樣進(jìn)行運算,說明:如再用賦值語句給PRICE賦值是錯的PRICE=40;/*錯誤,不能給符號常量賦不能對符號常量指定類型intPRICE;/*錯誤,PRICE不是變量,不能指定類型*/,2.2常量與變量,2.2.2變量變量代表內(nèi)存中具有特定屬性的一個存儲單元,它用來存放數(shù)據(jù),也就是變量的值,在程序運行期間,這些值是可以改變的。變量名實際上是一個以一個名字對應(yīng)代表一個地址,在對程序編譯連接時由編譯系統(tǒng)給每一個變量名分配對應(yīng)的內(nèi)存地址。從變量中取值,實際上是通過變量名找到相應(yīng)的內(nèi)存地址,從該存儲單元中讀取數(shù)據(jù)。,,2.2常量與變量,2.2.2變量用來標(biāo)識對象名字(包括變量、函數(shù)、數(shù)組、類型等)的有效字符序列。C語言中,有3類標(biāo)識符:關(guān)鍵字、系統(tǒng)預(yù)定義的標(biāo)識符、用戶標(biāo)識符。變量的名字必須符合C語言對標(biāo)識符的規(guī)定。C語言規(guī)定標(biāo)識符只能由字母、數(shù)字和下劃線三種字符組成,且第一個字符必須為字母或下劃線。,2.2常量與變量,變量命名的規(guī)定:變量的名字必須符合C語言對標(biāo)示符得規(guī)定例:sum,_total,month,Student_name,lotus_1_2_3,BASIC,li_lingM.D.John,¥123,3D64,a>b,?,?,2.2常量與變量,注意:編譯系統(tǒng)將大寫字母和小寫字母認(rèn)為是兩個不同的字符。建議變量名的長度最好不要超過8個字符。在選擇變量名和其它標(biāo)識符時,應(yīng)注意做到“見名知意”,即選有含意的英文單詞(或其縮寫)作標(biāo)識符。要求對所有用到的變量作強制定義,也就是“先定義,后使用”。,2.3整型數(shù)據(jù),2.3.1整型常量的表示形式整型常量即整常數(shù)。在C語言中,整常數(shù)可用以下三種形式表示:(1)十進(jìn)制整數(shù)。如:123,-456,4。(2)八進(jìn)制整數(shù)。以0頭的數(shù)是八進(jìn)制數(shù)。如:0123表示八進(jìn)制數(shù)123,等于十進(jìn)制數(shù)83,-011表示八進(jìn)制數(shù)-11,即十進(jìn)制數(shù)-9。,2.3整型數(shù)據(jù),2.3.1整型常量的表示形式(3)十六進(jìn)制整數(shù)。以0 x開頭的數(shù)是16進(jìn)制數(shù)。如:0 x123,代表16進(jìn)制數(shù)123,等于十進(jìn)制數(shù)291。-0 x12等于十進(jìn)制數(shù)-10。,2.3.2整型變量整型變量用來存放整型常量。整型變量的基本類型符為int。C語言中有以下3類整型變量:基本整型,短整型,長整型。,2.3整型數(shù)據(jù)2.3.2整型變量,注意:ANSIC標(biāo)準(zhǔn)沒有具體規(guī)定以上各類數(shù)據(jù)所占內(nèi)存的字節(jié)數(shù)而是由各計算機系統(tǒng)自行決定。TurboC中,int型和short型數(shù)據(jù)都是2個字節(jié),即16個二進(jìn)制位。long型數(shù)據(jù)是4個字節(jié),32位。而VC++則給short型數(shù)據(jù)分配2個字節(jié),16位,int和long型數(shù)據(jù)都是4個字節(jié),32位。,2.3整型數(shù)據(jù)2.3.2整型變量,一般情況下,存儲整數(shù)時存儲單元中的第一個二進(jìn)位用來代表數(shù)值符號,而在實際應(yīng)用中,變量的值常常是正的,所以存儲單元全部用來存儲數(shù)值本身,此定義無符號整數(shù)。所以歸納起來,在C語言中,可以定義和使用6種整型變量。,共六種,,有符號基本整型有符號短整型有符號長整型無符號基本整型無符號短整型無符號長整型,(signed)int(signed)short(int)(signed)long(int)unsignedintunsignedshort(int)unsignedlong(int),注意:括號表示其中的內(nèi)容是可選的.,2.3整型數(shù)據(jù)2.3.2整型變量,整數(shù)類型的有關(guān)數(shù)據(jù):,,,,,,,類型類型說明符長度數(shù)的范圍基本型int4字節(jié)-231~231-1短整型short2字節(jié)-215~215-1長整型long4字節(jié)-231~231-1無符號整型unsignedint4字節(jié)0~232-1無符號短整型unsignedshort2字節(jié)0~216-1(65535)無符號長整型unsignedlong4字節(jié)0~232-1,,,例2.2整型變量的定義與使用#includevoidmain(){inta,b,c,d;/*指定a、b、c、d為整型變量*/unsignedu;/*指定u為無符號整型變量*/a=12;b=-24;u=10;c=a+u;d=b+u;printf("a+u=%d,b+u=%d\n",c,d):},說明:可以看到不同種類的整型數(shù)據(jù)可以進(jìn)行算術(shù)運算,運行結(jié)果:a+u=22,b+u=-14,2.3整型數(shù)據(jù)2.3.3整型數(shù)據(jù)在內(nèi)存中的存放形式,數(shù)據(jù)在內(nèi)存中以二進(jìn)制形式存放。如:inti;/*定義為整型變量*/i=10;/*給i賦以整數(shù)10*/ii(a)(b),,,,2.3整型數(shù)據(jù)2.3.3整型數(shù)據(jù)在內(nèi)存中的存放形式,實際上,數(shù)值是以補碼表示的。一個正整數(shù)的補碼和該數(shù)的原碼相同。負(fù)數(shù)的補碼是:將該數(shù)的絕對值的二進(jìn)制形式,按位取反再加1。10的原碼(a)取反(b)得-10的補碼(c),例2.3整型數(shù)據(jù)的溢出(TC環(huán)境)#includevoidmain(){inta,b;a=32767;b=a+1;printf("%d,%d\n",a,b);},說明:數(shù)值是以補碼表示的。一個整型變量只能容納-32768~32767范圍內(nèi)的數(shù),無法表示大于32767或小于-32768的數(shù)。遇此情況就發(fā)生“溢出”。,運行結(jié)果:32767,-32768,2.3整型數(shù)據(jù)2.3.4整型數(shù)據(jù)的溢出,如果系統(tǒng)給一個整型變量分配2個字節(jié),則變量的最大允許值為32767,若超出最大值就出現(xiàn)溢出現(xiàn)象。,例2.3整型數(shù)據(jù)的溢出(VC環(huán)境)#includevoidmain(){Sum=2147483647;printf("%d\n",Sum);Sum=Sum+1;printf("%d\n",Sum);Sum=4294967295;printf("%d\n",Sum);},運行結(jié)果:2147483647,-2147483648,-1,2.3整型數(shù)據(jù),2.3.5整型常量的類型整型變量的分類規(guī)則:(1)一個整數(shù),如果其值在-32768~+32767范圍內(nèi),認(rèn)為它是int型,它可以賦值給int型和longint型變量。(2)一個整數(shù),如果其值超過了上述范圍,而在-2147483637~+2147483647范圍內(nèi),則認(rèn)為它是為長整型??梢詫⑺x值給一個longint型變量。,2.3整型數(shù)據(jù),2.3.5整型常量的類型(3)在一個整常量后面加一個字母l或L,則認(rèn)為是longint型常量,例如123l、432L、0L等,這往往用于函數(shù)調(diào)用中。如果函數(shù)的形參為longint型,則要求實參也為longint型。(4)一個整常量后面加一個字母u或U,認(rèn)為是unsignedint型,如12345u在內(nèi)存中按unsignedint規(guī)定的方式存放(存儲單元中最高位不作為符號位,而用來存儲數(shù)據(jù))。,2.4浮點型數(shù)據(jù),2.4.1浮點型常量的表示形式,兩種表示形式,,十進(jìn)制小數(shù)指數(shù),0.1233e-3,注意:字母e(或E)之前必須有數(shù)字,且e后面的指數(shù)必須為整數(shù),1e3、1.8e-3、-123e-6、-.1e-3e3、2.1e3.5、.e3、e,?,?,2.4浮點型數(shù)據(jù),2.4.1浮點型常量的表示形式規(guī)范化的指數(shù)形式:在字母e(或E)之前的小數(shù)部分中,小數(shù)點左邊應(yīng)有一位(且只能有一位)非零的數(shù)字.例如:123.456可以表示為:123.456e0,12.3456e1,1.23456e2,0.123456e3,0.0123456e4,0.00123456e其中的1.23456e3稱為“規(guī)范化的指數(shù)形式”。,2.4浮點型數(shù)據(jù),2.4.2浮點型變量1)浮點型變量分為單精度(float型)、雙精度(double型)和長雙精度型(longdouble)三類形式。,,2.4浮點型數(shù)據(jù),2.4.2浮點型變量2)浮點型數(shù)據(jù)在內(nèi)存中的存放形式:一個浮點型數(shù)據(jù)一般在內(nèi)存中占4個字節(jié)(32位)。與整型數(shù)據(jù)的存儲方式不同,浮點型數(shù)據(jù)是按照指數(shù)形式存儲的。系統(tǒng)把一個浮點型數(shù)據(jù)分成小數(shù)部分和指數(shù)部分,分別存放。指數(shù)部分采用規(guī)范化的指數(shù)形式。,456576.37?+.456576376,3)浮點型數(shù)據(jù)的舍入誤差:由于浮點型變量是由有限的存儲單元組成的,因此能提供的有效數(shù)字總是有限的。在有效位以外的數(shù)字將被舍去。由此可能會產(chǎn)生一些誤差例2.4浮點型數(shù)據(jù)的舍入誤差#includevoidmain(){floata,b;a=123456.789e5;b=a+20;printf("%f\n",b);}(此例有問題,把e5改為e15,見下頁),說明:一個浮點型變量只能保證的有效數(shù)字是7位有效數(shù)字,后面的數(shù)字是無意義的,并不準(zhǔn)確地表示該數(shù)。應(yīng)當(dāng)避免將一個很大的數(shù)和一個很小的數(shù)直接相加或相減,否則就會“丟失”小的數(shù)。,運行結(jié)果:123456.789e5,2.4浮點型數(shù)據(jù)2.4.2浮點型變量,例2.4浮點型數(shù)據(jù)的舍入誤差,#includevoidmain(){floata,b;a=123456.789e15;printf("%f\n",a);b=a+20;printf("%f\n",b);},2.4浮點型數(shù)據(jù),2.4.3浮點型常量的類型C編譯系統(tǒng)將浮點型常量作為雙精度來處理。例如:f=2.45678*4523.65系統(tǒng)先把2.45678和4523.65作為雙精度數(shù),然后進(jìn)行相乘的運算,得到的乘也是一個雙精度數(shù)。如果把一個浮點型常量賦給一個單精度變量f系統(tǒng)給出警告,警告不影響連接和運行最后結(jié)果.但只取其結(jié)果前7位賦給浮點型變量f。如是在數(shù)的后面加字母f或F(如1.65f,654.87F),編譯系統(tǒng)就會把它們按單精度處理。,2.5字符型數(shù)據(jù),2.5.1字符常量(1)用單引號包含的一個字符是字符型常量(2)只能包含一個字符,例,‘a(chǎn),A,‘1‘a(chǎn)bc、“a”,,,?,2.5.1字符常量,,有些以“\”開頭的特殊字符稱為轉(zhuǎn)義字符,例2.5轉(zhuǎn)義字符的使用#includevoidmain(){printf("abc\tde\rf\tg\n");printf("h\ti\b\bjk\n");},打印機上的顯示結(jié)果:fabcgdehjik,顯示屏上的運行結(jié)果:fgdehjk,2.5字符型數(shù)據(jù),2.5.2字符變量字符型變量用來存放字符常量,注意只能放一個字符。字符變量的定義形式如下:charc1,c2;在本函數(shù)中可以用下面語句對c1,c2賦值:c1=a;c2=b;一個字符變量在內(nèi)存中占一個字節(jié)。,,2.5字符型數(shù)據(jù),2.5.3字符數(shù)據(jù)在內(nèi)存中的存儲形式及其使用方法一個字符常量存放到一個字符變量中,實際上并不是把該字符的字型放到內(nèi)存中去,而是將該字符的相應(yīng)的ASCII代碼放到存儲單元中。這樣使字符型數(shù)據(jù)和整型數(shù)據(jù)之間可以通用。,注意:一個字符數(shù)據(jù)既可以以字符形式輸出,也可以以整數(shù)形式輸出.以字符形式輸出時,系統(tǒng)先將存儲單元中的ASCII碼轉(zhuǎn)換成相應(yīng)字符,然后輸出。以整數(shù)形式輸出時,直接將ASCII碼作為整數(shù)輸出。也可以對字符數(shù)據(jù)進(jìn)行算術(shù)運算,此時相當(dāng)于對它們的ASCII碼進(jìn)行算術(shù)運算。,例2.6向字符變量賦予整數(shù)。#includevoidmain(){charc1,c2;c1=97;c2=98;printf("%c%c\n",c1,c2);printf("%d%d\n",c1,c2);},說明:在第4和第5行中,將整數(shù)97和98分別賦給c1和c2,它的作用相當(dāng)于以下兩個賦值語句:c1=a;c2=b;因為a和b的ASCII碼為97和98,運行結(jié)果:ab9798,例2.7大小寫字母的轉(zhuǎn)換#includevoidmain(){charc1,c2;c1=a;c2=b;c1=c1-32;c2=c2-32;printf("%c%c",c1,c2);},說明:程序的作用是將兩個小寫字母a和b轉(zhuǎn)換成大寫字母A和B。從ASCII代碼表中可以看到每一個小寫字母比它相應(yīng)的大寫字母的ASCII碼大32。C語言允許字符數(shù)據(jù)與整數(shù)直接進(jìn)行算術(shù)運算。,運行結(jié)果:ab,2.5字符型數(shù)據(jù)2.5.3字符數(shù)據(jù)在內(nèi)存中的存儲形式及其使用方法,說明:有些系統(tǒng)(如TurboC,VC++)將字符變量定義為signedchar型。其存儲單元中的最高位作為符號位,它的取值范圍是-128~127。如果在字符變量中存放一個ASCII碼為0~127間的字符,由于字節(jié)中最高位為0,因此用%d輸出字符變量時,輸出的是一個正整數(shù)。如果在字符變量中存放一個ASCII碼為128~255間的字符,由于在字節(jié)中最高位為1,用%d格式符輸出時,就會得到一個負(fù)整數(shù)。,,#includevoidmain(){charc1;//改為short類型,如何?c1=255;printf("%d\n",c1);},,#includevoidmain(){shortc1;//改為int類型,如何?c1=32728;printf("%d\n",c1);},#includevoidmain(){intc1;//改為short類型,如何?c1=65536;printf("%d\n",c1);},2.5字符型數(shù)據(jù),2.5.4字符串常量字符串常量是一對雙撇號括起來的字符序列.合法的字符串常量:“Howdoyoudo.”,“CHINA”,“a”,“$123.45”可以輸出一個字符串,如printf(“Howdoyoudo.”);,2.5字符型數(shù)據(jù)2.5.4字符串常量,‘a(chǎn)是字符常量,“a”是字符串常量,二者不同。如:假設(shè)C被指定為字符變量:charc,c=‘a(chǎn);c=“a”;c=“CHINA”;,?,?,結(jié)論:不能把一個字符串常量賦給一個字符變量。,C規(guī)定:在每一個字符串常量的結(jié)尾加一個“字符串結(jié)束標(biāo)志”,以便系統(tǒng)據(jù)此判斷字符串是否結(jié)束。C規(guī)定以字符\0作為字符串結(jié)束標(biāo)志。,如:如果有一個字符串常量”China”,實際上在內(nèi)存中是:,它占內(nèi)存單元不是5個字符,而是6個字符,最后一個字符為\0。但在輸出時不輸出\0。,2.5字符型數(shù)據(jù)2.5.4字符串常量,2.6各類數(shù)值型數(shù)據(jù)間的混合運算,混合運算:整型(包括int,short,long)、浮點型(包括float,double)可以混合運算。在進(jìn)行運算時,不同類型的數(shù)據(jù)要先轉(zhuǎn)換成同一類型,然后進(jìn)行運算.,說明:這種類型轉(zhuǎn)換是由系統(tǒng)自動進(jìn)行的。,數(shù)據(jù)表示的差異性:,#includemain(){floatTotal;Total=1/3;printf("Total=%f\n\n",Total);},,#includemain(){floatTotal;Total=1./3;printf("Total=%f\n\n",Total);},數(shù)據(jù)表示的差異性:,2.7算術(shù)運算符和算術(shù)表達(dá)式,2.7.1C運算符和C算術(shù)表達(dá)式簡介1.C語言的運算符有以下幾類:⑴算術(shù)運算符(+-*/%)⑵關(guān)系運算符(><==>=<=?。剑沁壿嬤\算符(!inti;x=3.6;i=x;y=(int)x;printf("x=%f,y=%f,i=%d\n",x,y,i);},說明:有兩種類型轉(zhuǎn)換,一種是在運算時不必用戶指定,系統(tǒng)自動進(jìn)行的類型轉(zhuǎn)換,如3+6.5。第二種是強制類型轉(zhuǎn)換。當(dāng)自動類型轉(zhuǎn)換不能實現(xiàn)目的時,可以用強制類型轉(zhuǎn)換。,運行結(jié)果:x=3.600000,i=3,2.7算術(shù)運算符和算術(shù)表達(dá)式2.7.2算術(shù)運算符和算術(shù)表達(dá)式,4.自增、自減運算符作用是使變量的值增1或減1如:++i,--i(在使用i之前,使i的值加(減)1)i++,i--(在使用i之后,使i的值加(減)1),2.7算術(shù)運算符和算術(shù)表達(dá)式2.7.2算術(shù)運算符和算術(shù)表達(dá)式,i++與++i的區(qū)別:++i是先執(zhí)行i=i+1后,再使用i的值;i++是先使用i的值后,再執(zhí)行i=i+1。例如:①j=++i;(i=i+1,j=i)i的值先變成4,再賦給j,j的值為4②j=i++;(j=i,i=i+1)先將i的值3賦給j,j的值為3,然后i變?yōu)?,2.7算術(shù)運算符和算術(shù)表達(dá)式2.7.2算術(shù)運算符和算術(shù)表達(dá)式,注意:(1)自增運算符(++),自減運算符(--),只能用于變量,而不能用于常量或表達(dá)式。(2)++和--的結(jié)合方向是“自右至左”。(3)自增(減)運算符常用于循環(huán)語句中使循環(huán)變量自動加1。也用于指針變量,使指針指向下一個地址。(4)使用++和--時,為避免二義性,最好采取大家都能理解的寫法,可以加一些“不必要”的括號,如(i++)+j。,2.8逗號運算符和逗號表達(dá)式,逗號運算符:將兩個表達(dá)式連接起來,又稱為“順序求值運算符”。如:3+5,6+8,一般形式:表達(dá)式1,表達(dá)式2,求解過程:先求解表達(dá)式1,再求解表達(dá)式2。整個逗號表達(dá)式的值是表達(dá)式2的值。,逗號表達(dá)式的值為14,2.8逗號運算符和逗號表達(dá)式,例:逗號表達(dá)式a=3*5,a*4,分析:賦值運算符的優(yōu)先級別高于逗號運算符,因此應(yīng)先求解a=3*5。,a的值為15,然后求解a*4,得60。整個逗號表達(dá)式的值為60。,一個逗號表達(dá)式又可以與另一個表達(dá)式組成一個新的逗號表達(dá)式。如:(a=3*5,a*4),a+5先計算出a的值等于15,再進(jìn)行a*4的運算得60(但a值未變,仍為15),再進(jìn)行a+5得20,即整個表達(dá)式的值為20。,2.8逗號運算符和逗號表達(dá)式,逗號表達(dá)式的一般形式可以擴展為表達(dá)式1,表達(dá)式2,表達(dá)式3,……,表達(dá)式n它的值為表達(dá)式n的值。,逗號運算符是所有運算符中級別最低的例:①x=(a=3,6*3)②x=a=3,6*3,賦值表達(dá)式,將一個逗號表達(dá)式的值賦給x,x的值等于18,逗號表達(dá)式,包括一個賦值表達(dá)式和一個算術(shù)表達(dá)式,x的值為3,整個逗號表達(dá)式的值為18。,2.8逗號運算符和逗號表達(dá)式,注意:并不是任何地方出現(xiàn)的逗號都是作為逗號運算符。例如函數(shù)參數(shù)也是用逗號來間隔的。如:printf("%d,%d,%d",a,b,c);,“a,b,c”并不是一個逗號表達(dá)式,它是printf函數(shù)的3個參數(shù),printf("%d,%d,%d",(a,b,c),b,c),“(a,b,c)”是一個逗號表達(dá)式,它的值等于c的值。,- 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) 鍵 詞:
- 語言 數(shù)據(jù)類型
鏈接地址:http://kudomayuko.com/p-11495448.html