




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
1、基本數(shù)據(jù)類型(備注:Java屬于C語系,和C語言的數(shù)據(jù)類型是一致的)1、1 C的數(shù)據(jù)類型程序、算法處理的對象是數(shù)據(jù)。數(shù)據(jù)以某種特定的形式存在(如整數(shù)、實(shí)數(shù)、字符),而且不同的數(shù)據(jù)還存在某些聯(lián)系(如由若干整數(shù)構(gòu)成的數(shù)組)。數(shù)據(jù)結(jié)構(gòu)就是指數(shù)據(jù)的組織形式(邏輯結(jié)構(gòu)、物理結(jié)構(gòu))。處理同樣的問題如果數(shù)據(jù)結(jié)構(gòu)不同,算法也不同,應(yīng)當(dāng)綜合考慮算法和數(shù)據(jù)結(jié)構(gòu)、選擇最佳的數(shù)據(jù)結(jié)構(gòu)和算法。C語言的數(shù)據(jù)結(jié)構(gòu)是以數(shù)據(jù)類型的形式體現(xiàn)。也就是說C語言中數(shù)據(jù)是有類型的,數(shù)據(jù)的類型簡稱數(shù)據(jù)類型。例如,整型數(shù)據(jù)、實(shí)型數(shù)據(jù)、整型數(shù)組類型、字符數(shù)組類型(字符串)分別代表我們常說的整數(shù)、實(shí)數(shù)、數(shù)列、字符串。C語言的數(shù)據(jù)類型:注意:1、
2、不同的數(shù)據(jù)類型有不同的取值范圍。如有符號整數(shù)取值范圍-3276832767,浮點(diǎn)數(shù)-3.4e-383.4e38。2、不同的數(shù)據(jù)類型有不同的操作。如整型數(shù)可以取余操作,實(shí)型數(shù)據(jù)卻不行;整型、實(shí)型數(shù)據(jù)可以有加法,字符數(shù)組不行。3、不同的數(shù)據(jù)類型即使有相同的操作有時含義也不同,如指針數(shù)據(jù)自增1與整數(shù)自增1含義是不同的。4、不同的數(shù)據(jù)類型對計(jì)算機(jī)可能出現(xiàn)的錯誤不同。如整型數(shù)的溢出錯誤,浮點(diǎn)數(shù)的精度的丟失(有效數(shù)字位數(shù)不夠)。5、C語言的數(shù)據(jù)類型可以構(gòu)造復(fù)雜的數(shù)據(jù)結(jié)構(gòu)。如使用結(jié)構(gòu)體數(shù)組可以構(gòu)造線性表。使用指針類型、結(jié)構(gòu)體類型可以構(gòu)造線性鏈表(棧、隊(duì)列)、樹、圖。(在數(shù)據(jù)結(jié)構(gòu)課程介紹)6、C語言中的數(shù)據(jù)有
3、變量與常量,它們分別屬于上述這些類型。1、2 常量與變量1、2、1 常量:在程序的運(yùn)行過程中,其值不能改變的量稱為常量。注意:1、 常量有不同的類型,如12、0、-3為整型常量,4.6、-1.23為實(shí)型常量,a、d字符常量。常量可以從字面形式即可判斷-字面常量或直接常量。2、 符號常量#define PI 3.1416使用符號常量的好處:(1) 含義清楚、見名知意。(2) 修改方便、一改全改。例2-1:符號常量應(yīng)用#define PI 3.14main() float area; area=10*10*PI; printf("area=%fn",area);結(jié)果:area=
4、314.0000001、2、2 變量:在程序的運(yùn)行過程中,其值可以改變的量稱為變量。注意:1、 變量名(用標(biāo)識符表示)、變量在內(nèi)存中占據(jù)的存儲單元、變量值三者關(guān)系。變量名在程序運(yùn)行過程中不會改變,變量的值可以改變。變量名遵守標(biāo)識符準(zhǔn)則。2、C語言中變量:“先定義,后使用”。即就是說,C要求對所有用到的變量做強(qiáng)制定義。1) 只有申明過的變量才可以在程序中使用,這使得變量名的拼寫錯誤容易發(fā)現(xiàn)。BASIC卻不是這樣。有時你會用了兩個相近似變量而你根本沒有發(fā)現(xiàn),卻當(dāng)作同一個變量在使用。2) 申明的變量屬于確定的類型,編譯系統(tǒng)可方便地檢查變量所進(jìn)行運(yùn)算的合法性。3) 在編譯時根據(jù)變量類型可以為變量確定存
5、儲空間,“先定義后使用”使程序效率高。1、3 整型數(shù)據(jù)1、3、1整型常數(shù)的表示方法三種形式:(+/-)1) 十進(jìn)制。例如123,-456,0。2) 八進(jìn)制。以0開頭,后面跟幾位的數(shù)字(0-7)。例如:0123=(123)8=(83)10;-011=(-11)8=(-9)10。3) 十六進(jìn)制。以0x開頭,后面跟幾位的數(shù)字(0-9,A-F)。例如:0x123=291,-0x12=-18。4) 整型常量的類型(整型常數(shù)的后綴)-在整型變量部分介紹,這里只要知道怎么表示。整型常量后可以用:u或U明確說明為無符號整型數(shù)l或L明確說明為長整型數(shù).1、 3、2整型變量2、 整型數(shù)據(jù)在內(nèi)存中的存放形式數(shù)據(jù)在內(nèi)
6、存中以二進(jìn)制形式存放,事實(shí)上以補(bǔ)碼形式存放。例如:定義一個整型變量i=10,補(bǔ)充知識(參考微機(jī)原理等課程):1)帶符號數(shù)的表示,原碼、反碼、補(bǔ)碼。2)原碼-補(bǔ)碼相互轉(zhuǎn)化。正數(shù)的補(bǔ)碼與其原碼相同,負(fù)數(shù)的補(bǔ)碼是其對應(yīng)的原碼數(shù)值位按位取反+1。例題:10,-10的計(jì)算機(jī)機(jī)內(nèi)表示。思路:先將數(shù)值表示為二進(jìn)制形式(十進(jìn)制=>二進(jìn)制,除2取余),即獲得數(shù)值的原碼。將原碼轉(zhuǎn)化為補(bǔ)碼,就是機(jī)內(nèi)表示。10 =(1010)2 =(0000,0000,0000,1010)原=(0000,0000,0000,1010)補(bǔ)。-10=(-1010)2=(1000,0000,0000,1010)原=(1111,111
7、1,1111,0110)補(bǔ)。從10,-10的計(jì)算機(jī)機(jī)內(nèi)表示可以看出正數(shù)、負(fù)數(shù)機(jī)內(nèi)表示(補(bǔ)碼表示)看上去明顯不同。3、 整型變量的分類整型變量的基本類型為int。通過加上修飾符,可定義更多的整數(shù)數(shù)據(jù)類型。1) 根據(jù)表達(dá)范圍可以分為:基本整型 (int)、短整型(short int)、長整型(long int)。用long型可以獲得大范圍的整數(shù),但同時會降低運(yùn)算速度。2) 根據(jù)是否有符號可以分為:有符號(signed,默認(rèn)),無符號(unsigned)-目的:擴(kuò)大表示范圍,有些情況只需要用正整數(shù)。有符號整型數(shù)的存儲單元的最高位是符號位(0:正、1:負(fù)),其余為數(shù)值位。無符號整型數(shù)的存儲單元的全部二
8、進(jìn)制位用于存放數(shù)值本身而不包含符號。歸納起來可以用6種整型變量:l 有符號基本整型 :signedintl 有符號短整型 :signedshortintl 有符號長整型 :signedlongintl 無符號基本整型 :unsigned intl 無符號短整型 :unsigned short intl 無符號長整型 :unsigned long int例子:保存整數(shù)13的各種整型數(shù)據(jù)類型。C標(biāo)準(zhǔn)沒有具體規(guī)定上面數(shù)據(jù)類型所占用的字節(jié)數(shù),只要求long型數(shù)據(jù)長度不短于int型,short型不長于int型。具體如何實(shí)現(xiàn),由各計(jì)算機(jī)系統(tǒng)自行決定。如微機(jī)上short,int都是16位,而long是32位
9、;VAX750機(jī),int,long都是32位,而short是16位。4、 整型變量的定義格式:數(shù)據(jù)類型名 變量名表;例如:main() int a,b,c,d; unsigned u; a=12; b=-24; u=10; c=a+u; d=b+u; printf(“%d,%dn”,c,d);說明:(1) 變量定義時,可以說明多個相同類型的變量。各個變量用“,”分隔。類型說明與變量名之間至少有一個空格間隔。(2) 最后一個變量名之后必須用“;”結(jié)尾。(3) 變量說明必須在變量使用之前。(4) 可以在定義變量的同時,對變量進(jìn)行初始化。例2-2:變量初始化main() int a=3,b=5; p
10、rintf("a+b=%dn",a+b);5、 整型數(shù)據(jù)的溢出整型數(shù)最大允許值+1,最小允許值-1,會出現(xiàn)什么情況?32767+1=-32768;-32768-1=32767。例2-2a:整型數(shù)據(jù)的溢出main() int a,b; a=32767; b=a+1; printf("na=%d,a+1=%dn",a,b); a=-32768; b=a-1; printf("na=%d,a-1=%dn",a,b); getch();a=32767,a+1=-32768a=-32768,a-1=32767超出范圍就發(fā)生“溢出”,運(yùn)行時不報(bào)錯
11、。1、4 實(shí)型數(shù)據(jù)1、4、1實(shí)型常量的表示方法實(shí)數(shù)(浮點(diǎn)數(shù))有兩種表示形式:1、 十進(jìn)制小數(shù)形式。由數(shù)字,小數(shù)點(diǎn)組成(必須有小數(shù)點(diǎn))。例如:.123、123.、123.0、0.02、 指數(shù)形式。格式:aEn。例如:123e3、123E3都是實(shí)數(shù)的合法表示。注意:1) 字母e或E之前必須有數(shù)字,e后面的指數(shù)必須為整數(shù)。例如:e3、2.1e3.5、.e3、e都不是合法的指數(shù)形式。2) 規(guī)范化的指數(shù)形式。在字母e或E之前的小數(shù)部分,小數(shù)點(diǎn)左邊應(yīng)當(dāng)有且只能有一位非0數(shù)字。用指數(shù)形式輸出時,是按規(guī)范化的指數(shù)形式輸出的。例如:2.3478e2、3.0999E5、6.46832e12都屬于規(guī)范化的指數(shù)形式。
12、3) 實(shí)型常量都是雙精度,如果要指定它為單精度,可以加后綴f(實(shí)型數(shù)據(jù)類型參看實(shí)型變量部分說明)。1、4、2實(shí)型變量1、 實(shí)型數(shù)據(jù)在內(nèi)存中的存放形式一個實(shí)型數(shù)據(jù)一般在內(nèi)存中占4個字節(jié)(32位)。與整數(shù)存儲方式不同,實(shí)型數(shù)據(jù)是按照指數(shù)形式存儲的。系統(tǒng)將實(shí)型數(shù)據(jù)分為小數(shù)部分和指數(shù)部分,分別存放。實(shí)型數(shù)據(jù)存放的示意圖。標(biāo)準(zhǔn)C沒有規(guī)定用多少位表示小數(shù),多少位表示指數(shù)部分,由C編譯系統(tǒng)自定。例如,很多編譯系統(tǒng)以24位表示小數(shù)部分,8位表示指數(shù)部分。小數(shù)部分占的位數(shù)多,實(shí)型數(shù)據(jù)的有效數(shù)字多,精度高;指數(shù)部分占的位數(shù)多,則表示的數(shù)值范圍大。2、 實(shí)型變量的分類實(shí)型變量分為:單精度(float)、雙精度(do
13、uble)、長雙精度(long double)。ANSI C沒有規(guī)定每種數(shù)據(jù)類型的長度、精度和數(shù)值范圍。表3.2列出微機(jī)上常用的C編譯系統(tǒng)的情況,不同的系統(tǒng)會有差異。表3.2類型比特?cái)?shù)有效數(shù)字?jǐn)?shù)值范圍float326-7-3.4x10+38 3.4x10+38double6415-16-1.7x10+308 1.7x10+308long double12818-19-1.2x10+4932 1.2x10+4932對于每一個實(shí)型變量也都應(yīng)該先定義后使用。如:float x,y;double z;long double t;3、 實(shí)型數(shù)據(jù)的舍入誤差(對比:整型數(shù)據(jù)的溢出)實(shí)型變量是用有限的存儲單元
14、存儲的,因此提供的有效數(shù)字是有限的,在有效位以外的數(shù)字將被舍去,由此可能會產(chǎn)生一些誤差。例2-3a:實(shí)型數(shù)據(jù)的舍入誤差(實(shí)型變量只能保證7位有效數(shù)字,后面的數(shù)字無意義)main() float a,b; a=123456.789e5; b=a+20; printf("a=%f,b=%fn",a,b); printf("a=%e,b=%en",a,b); a=12345678848.000000,b=12345678848.000000a=1.23457e+10,b=1.23457e+10結(jié)論:由于實(shí)數(shù)存在舍入誤差,使用時要注意:(a) 不要試圖用一個實(shí)數(shù)
15、精確表示一個大整數(shù),記?。焊↑c(diǎn)數(shù)是不精確的。(b) 實(shí)數(shù)一般不判斷“相等”,而是判斷接近或近似。(c) 避免直接將一個很大的實(shí)數(shù)與一個很小的實(shí)數(shù)相加、相減,否則會“丟失”小的數(shù)。(d) 根據(jù)要求選擇單精度、雙精度。例2-4:根據(jù)精度要求,選擇實(shí)數(shù)類型main() float a; double b; a=33333.33333; b=33333.3333333333; printf("a=%f,b=%fn",a,b);1、4、3實(shí)型常量的類型1、 許多C編譯系統(tǒng)將實(shí)型常量作為雙精度實(shí)數(shù)來處理,這樣可以保證較高的精度,缺點(diǎn)是運(yùn)算速度降低。在實(shí)數(shù)的后面加字符f或F,如1.65f
16、、654.87F,使編譯系統(tǒng)按單精度處理實(shí)數(shù)。2、 實(shí)型常量可以賦值給一個float、double、long double型變量。根據(jù)變量的類型截取實(shí)型常量中相應(yīng)的有效數(shù)字。1、5 字符型數(shù)據(jù)1、5、1字符常量字符常量是用單引號()括起來的一個字符。字符常量主要用下面幾種形式表示:1、 可顯示的字符常量直接用單引號括起來,如,a、x、D、?、$等都是字符常量。2、 所有字符常量(包括可以顯示的、不可顯示的)均可以使用字符的轉(zhuǎn)義表示法表示(ASCII碼表示)。轉(zhuǎn)義表示格式:ddd或xhh(其中ddd,hh是字符的ASCII碼,ddd八進(jìn)制、hh十六進(jìn)制)。注意:不可寫成0xhh或0ddd(整數(shù))
17、。3、 預(yù)先定義的一部分常用的轉(zhuǎn)義字符。如n-換行,t-水平制表。例2-5:(P.15.)分析數(shù)據(jù)的格式輸出。注意:b,t對輸出的控制作用。例2-6:(P.16.)分析數(shù)據(jù)的格式輸出。注意:在打印機(jī)打印和在顯示器上輸出的不同效果。打印機(jī)打印過的地方可以永久保留,顯示器不能在同一個位置只能顯示最后輸出的字符。1、5、2字符變量字符型變量是用來存放字符數(shù)據(jù),同時只能存放一個字符。所有編譯系統(tǒng)都規(guī)定以一個字節(jié)來存放一個字符,或者說,一個字符變量在內(nèi)存中占一個字節(jié)。1、5、3字符數(shù)據(jù)在內(nèi)存中的存儲形式及其使用字符數(shù)據(jù)在內(nèi)存中的存儲形式:以字符的ASCII碼,以二進(jìn)制形式存放,占用1個字節(jié)??梢钥闯鲎址?/p>
18、數(shù)據(jù)以ASCII碼存儲的形式與整數(shù)的存儲形式類似,這使得字符型數(shù)據(jù)和整型數(shù)據(jù)之間可以通用(當(dāng)作整型量)。具體表現(xiàn)為:1、 可以將整型量賦值給字符變量,也可以將字符量賦值給整型變量。2、 可以對字符數(shù)據(jù)進(jìn)行算術(shù)運(yùn)算,相當(dāng)于對它們的ASCII碼進(jìn)行算術(shù)運(yùn)算。3、 一個字符數(shù)據(jù)既可以以字符形式輸出(ASCII碼對應(yīng)的字符),也可以以整數(shù)形式輸出(直接輸出ASCII碼)。注意:盡管字符型數(shù)據(jù)和整型數(shù)據(jù)之間可以通用,但是字符型只占1個字節(jié),即如果作為整數(shù)使用范圍0-255(無符號)-128-127(有符號)。例2-7a:給字符變量賦以整數(shù)(字符型、整型數(shù)據(jù)通用)main() /* 字符a的各種表達(dá)方法
19、*/ char c1='a' char c2='x61'/* note:'x.','.' */ char c3='141' char c4=97; char c5=0x61; /* note: 0x.,0. */ char c6=0141; printf("nc1=%c,c2=%c,c3=%c,c4=%c,c5=%c,c6=%cn",c1,c2,c3,c4,c5,c6); printf("c1=%d,c2=%d,c3=%d,c4=%d,c5=%d,c6=%dn",c1,c2,
20、c3,c4,c5,c6); getch();c1=a,c2=a,c3=a,c4=a,c5=a,c6=ac1=97,c2=97,c3=97,c4=97,c5=97,c6=97過程:整型數(shù)=>機(jī)內(nèi)表示(兩個字節(jié))=>取低8位賦值給字符變量例2-8a:大小寫字母的轉(zhuǎn)換(ASCII碼表:小寫字母比對應(yīng)的大寫字母的ASCII碼大32,本例還可以看出允許字符數(shù)據(jù)與整數(shù)直接進(jìn)行算術(shù)運(yùn)算,運(yùn)算時字符數(shù)據(jù)用ASCII碼值參與運(yùn)算)main() char c1,c2,c3; c1='a' c2='b' c1=c1-32; c2=c2-32; c3=130; printf
21、("n%c %c %cn",c1,c2,c3); printf("%d %d %dn",c1,c2,c3); getch();A B ?65 66 -1261、5、4字符串常量字符串變量:是一對雙引號(“”)括起來的字符序列。例如:“How dow you do?”,“CHINA”,“a”,“$123.45”.注意:1、 區(qū)分字符常量與字符串常量。如“a”和a。C語言規(guī)定:在每個字符串的結(jié)尾加一個“字符串結(jié)束標(biāo)志”,以便系統(tǒng)據(jù)此判斷字符串是否結(jié)束。C規(guī)定以0(ASCII碼為0的字符)作為字符串結(jié)束標(biāo)志。如:“CHINA”在內(nèi)存中的存儲應(yīng)當(dāng)是:(長度=6)
22、CHINA02、 不能將字符串賦給字符變量。3、 C語言沒有專門的字符串變量,如果想將一個字符串存放在變量中,可以使用字符數(shù)組。即用一個字符數(shù)組來存放一個字符串,數(shù)組中每一個元素存放一個字符。1、6 變量賦初值程序中常常需要對一些變量預(yù)先設(shè)置初值,C語言允許在定義變量的同時使變量初始化。例如:int a=3; /* 指定a為整型變量,初值為3 */float f=3.56; /* 指定f為實(shí)型變量,初值為3.56 */char c=a; /* 指定c為字符型變量,初值為a */可以只對定義的一部分變量賦初值。int a,b=2,c=5; /* 指定a,b,c為整型變量,只對b、c初始化,b的初值為2 ,c的初值為5*/初始化不是在編譯階段完成的,而是在程序運(yùn)行時執(zhí)行本函數(shù)時賦予初值的,相當(dāng)于有一個賦值語句。int a=3;相當(dāng)于:int a;a=3;1、7 各類數(shù)值型數(shù)據(jù)(整型、實(shí)型、字符型)的混合運(yùn)算整型(包括int,short,long)和實(shí)型(包括float,double)數(shù)據(jù)可以混合運(yùn)算,另外字符型數(shù)據(jù)和整型數(shù)據(jù)可以通用,因此,整型、實(shí)型、字符型數(shù)據(jù)之間可以混合運(yùn)算。例如:表達(dá)式10+a+1.5-8765.1234*b是合法的。在進(jìn)行運(yùn)算時,不同類型的數(shù)據(jù)先轉(zhuǎn)換成同一類型,然后進(jìn)行計(jì)算,轉(zhuǎn)換的方法有兩種:自動轉(zhuǎn)換(隱式
溫馨提示
- 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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025至2030年中國手工編織帶數(shù)據(jù)監(jiān)測研究報(bào)告
- 2025至2030年中國多管沖擊式除塵器數(shù)據(jù)監(jiān)測研究報(bào)告
- 2025至2030年中國雙纖模塊數(shù)據(jù)監(jiān)測研究報(bào)告
- 2025至2030年中國光機(jī)械式開關(guān)數(shù)據(jù)監(jiān)測研究報(bào)告
- 2025至2030年中國PVC陽臺護(hù)欄數(shù)據(jù)監(jiān)測研究報(bào)告
- 2025年中國鈦坯市場調(diào)查研究報(bào)告
- 2025年中國液壓分子油市場調(diào)查研究報(bào)告
- Unit 1 How can I get there?第三課時(教學(xué)設(shè)計(jì))-2024-2025學(xué)年人教PEP版英語六年級上冊
- 2025年中國塑料凹版表印油墨市場調(diào)查研究報(bào)告
- 2025年中國商務(wù)貼袖珍月歷市場調(diào)查研究報(bào)告
- 普惠金融政策解讀
- 2024年疾控中心支部工作計(jì)劃范本
- (投資管理)對外投資合作國別(地區(qū))指南
- 2024年度管理評審報(bào)告
- 砌筑工的培訓(xùn)
- 清洗衛(wèi)生間(課件)三年級下冊勞動人民版
- 《無菌檢查培訓(xùn)》課件
- 2024-2030年中國香菇行業(yè)銷售狀況及供需前景預(yù)測報(bào)告
- 幼兒園開學(xué)師德培訓(xùn)
- GB/T 44570-2024塑料制品聚碳酸酯板材
- 2024年廣東省深圳市中考英語試題含解析
評論
0/150
提交評論