版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、基本數(shù)據(jù)類型(備注:Java屬于C語系,和C語言的數(shù)據(jù)類型是一致的)1、1 C的數(shù)據(jù)類型程序、算法處理的對象是數(shù)據(jù)。數(shù)據(jù)以某種特定的形式存在(如整數(shù)、實數(shù)、字符),而且不同的數(shù)據(jù)還存在某些聯(lián)系(如由若干整數(shù)構成的數(shù)組)。數(shù)據(jù)結構就是指數(shù)據(jù)的組織形式(邏輯結構、物理結構)。處理同樣的問題如果數(shù)據(jù)結構不同,算法也不同,應當綜合考慮算法和數(shù)據(jù)結構、選擇最佳的數(shù)據(jù)結構和算法。C語言的數(shù)據(jù)結構是以數(shù)據(jù)類型的形式體現(xiàn)。也就是說C語言中數(shù)據(jù)是有類型的,數(shù)據(jù)的類型簡稱數(shù)據(jù)類型。例如,整型數(shù)據(jù)、實型數(shù)據(jù)、整型數(shù)組類型、字符數(shù)組類型(字符串)分別代表我們常說的整數(shù)、實數(shù)、數(shù)列、字符串。C語言的數(shù)據(jù)類型:注意:1、
2、不同的數(shù)據(jù)類型有不同的取值范圍。如有符號整數(shù)取值范圍-3276832767,浮點數(shù)-3.4e-383.4e38。2、不同的數(shù)據(jù)類型有不同的操作。如整型數(shù)可以取余操作,實型數(shù)據(jù)卻不行;整型、實型數(shù)據(jù)可以有加法,字符數(shù)組不行。3、不同的數(shù)據(jù)類型即使有相同的操作有時含義也不同,如指針數(shù)據(jù)自增1與整數(shù)自增1含義是不同的。4、不同的數(shù)據(jù)類型對計算機可能出現(xiàn)的錯誤不同。如整型數(shù)的溢出錯誤,浮點數(shù)的精度的丟失(有效數(shù)字位數(shù)不夠)。5、C語言的數(shù)據(jù)類型可以構造復雜的數(shù)據(jù)結構。如使用結構體數(shù)組可以構造線性表。使用指針類型、結構體類型可以構造線性鏈表(棧、隊列)、樹、圖。(在數(shù)據(jù)結構課程介紹)6、C語言中的數(shù)據(jù)有
3、變量與常量,它們分別屬于上述這些類型。1、2 常量與變量1、2、1 常量:在程序的運行過程中,其值不能改變的量稱為常量。注意:1、 常量有不同的類型,如12、0、-3為整型常量,4.6、-1.23為實型常量,a、d字符常量。常量可以從字面形式即可判斷-字面常量或直接常量。2、 符號常量#define PI 3.1416使用符號常量的好處:(1) 含義清楚、見名知意。(2) 修改方便、一改全改。例2-1:符號常量應用#define PI 3.14main() float area; area=10*10*PI; printf("area=%fn",area);結果:area=
4、314.0000001、2、2 變量:在程序的運行過程中,其值可以改變的量稱為變量。注意:1、 變量名(用標識符表示)、變量在內存中占據(jù)的存儲單元、變量值三者關系。變量名在程序運行過程中不會改變,變量的值可以改變。變量名遵守標識符準則。2、C語言中變量:“先定義,后使用”。即就是說,C要求對所有用到的變量做強制定義。1) 只有申明過的變量才可以在程序中使用,這使得變量名的拼寫錯誤容易發(fā)現(xiàn)。BASIC卻不是這樣。有時你會用了兩個相近似變量而你根本沒有發(fā)現(xiàn),卻當作同一個變量在使用。2) 申明的變量屬于確定的類型,編譯系統(tǒng)可方便地檢查變量所進行運算的合法性。3) 在編譯時根據(jù)變量類型可以為變量確定存
5、儲空間,“先定義后使用”使程序效率高。1、3 整型數(shù)據(jù)1、3、1整型常數(shù)的表示方法三種形式:(+/-)1) 十進制。例如123,-456,0。2) 八進制。以0開頭,后面跟幾位的數(shù)字(0-7)。例如:0123=(123)8=(83)10;-011=(-11)8=(-9)10。3) 十六進制。以0x開頭,后面跟幾位的數(shù)字(0-9,A-F)。例如:0x123=291,-0x12=-18。4) 整型常量的類型(整型常數(shù)的后綴)-在整型變量部分介紹,這里只要知道怎么表示。整型常量后可以用:u或U明確說明為無符號整型數(shù)l或L明確說明為長整型數(shù).1、 3、2整型變量2、 整型數(shù)據(jù)在內存中的存放形式數(shù)據(jù)在內
6、存中以二進制形式存放,事實上以補碼形式存放。例如:定義一個整型變量i=10,補充知識(參考微機原理等課程):1)帶符號數(shù)的表示,原碼、反碼、補碼。2)原碼-補碼相互轉化。正數(shù)的補碼與其原碼相同,負數(shù)的補碼是其對應的原碼數(shù)值位按位取反+1。例題:10,-10的計算機機內表示。思路:先將數(shù)值表示為二進制形式(十進制=>二進制,除2取余),即獲得數(shù)值的原碼。將原碼轉化為補碼,就是機內表示。10 =(1010)2 =(0000,0000,0000,1010)原=(0000,0000,0000,1010)補。-10=(-1010)2=(1000,0000,0000,1010)原=(1111,111
7、1,1111,0110)補。從10,-10的計算機機內表示可以看出正數(shù)、負數(shù)機內表示(補碼表示)看上去明顯不同。3、 整型變量的分類整型變量的基本類型為int。通過加上修飾符,可定義更多的整數(shù)數(shù)據(jù)類型。1) 根據(jù)表達范圍可以分為:基本整型 (int)、短整型(short int)、長整型(long int)。用long型可以獲得大范圍的整數(shù),但同時會降低運算速度。2) 根據(jù)是否有符號可以分為:有符號(signed,默認),無符號(unsigned)-目的:擴大表示范圍,有些情況只需要用正整數(shù)。有符號整型數(shù)的存儲單元的最高位是符號位(0:正、1:負),其余為數(shù)值位。無符號整型數(shù)的存儲單元的全部二
8、進制位用于存放數(shù)值本身而不包含符號。歸納起來可以用6種整型變量:l 有符號基本整型 :signedintl 有符號短整型 :signedshortintl 有符號長整型 :signedlongintl 無符號基本整型 :unsigned intl 無符號短整型 :unsigned short intl 無符號長整型 :unsigned long int例子:保存整數(shù)13的各種整型數(shù)據(jù)類型。C標準沒有具體規(guī)定上面數(shù)據(jù)類型所占用的字節(jié)數(shù),只要求long型數(shù)據(jù)長度不短于int型,short型不長于int型。具體如何實現(xiàn),由各計算機系統(tǒng)自行決定。如微機上short,int都是16位,而long是32位
9、;VAX750機,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) 最后一個變量名之后必須用“;”結尾。(3) 變量說明必須在變量使用之前。(4) 可以在定義變量的同時,對變量進行初始化。例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ā)生“溢出”,運行時不報錯
11、。1、4 實型數(shù)據(jù)1、4、1實型常量的表示方法實數(shù)(浮點數(shù))有兩種表示形式:1、 十進制小數(shù)形式。由數(shù)字,小數(shù)點組成(必須有小數(shù)點)。例如:.123、123.、123.0、0.02、 指數(shù)形式。格式:aEn。例如:123e3、123E3都是實數(shù)的合法表示。注意:1) 字母e或E之前必須有數(shù)字,e后面的指數(shù)必須為整數(shù)。例如:e3、2.1e3.5、.e3、e都不是合法的指數(shù)形式。2) 規(guī)范化的指數(shù)形式。在字母e或E之前的小數(shù)部分,小數(shù)點左邊應當有且只能有一位非0數(shù)字。用指數(shù)形式輸出時,是按規(guī)范化的指數(shù)形式輸出的。例如:2.3478e2、3.0999E5、6.46832e12都屬于規(guī)范化的指數(shù)形式。
12、3) 實型常量都是雙精度,如果要指定它為單精度,可以加后綴f(實型數(shù)據(jù)類型參看實型變量部分說明)。1、4、2實型變量1、 實型數(shù)據(jù)在內存中的存放形式一個實型數(shù)據(jù)一般在內存中占4個字節(jié)(32位)。與整數(shù)存儲方式不同,實型數(shù)據(jù)是按照指數(shù)形式存儲的。系統(tǒng)將實型數(shù)據(jù)分為小數(shù)部分和指數(shù)部分,分別存放。實型數(shù)據(jù)存放的示意圖。標準C沒有規(guī)定用多少位表示小數(shù),多少位表示指數(shù)部分,由C編譯系統(tǒng)自定。例如,很多編譯系統(tǒng)以24位表示小數(shù)部分,8位表示指數(shù)部分。小數(shù)部分占的位數(shù)多,實型數(shù)據(jù)的有效數(shù)字多,精度高;指數(shù)部分占的位數(shù)多,則表示的數(shù)值范圍大。2、 實型變量的分類實型變量分為:單精度(float)、雙精度(do
13、uble)、長雙精度(long double)。ANSI C沒有規(guī)定每種數(shù)據(jù)類型的長度、精度和數(shù)值范圍。表3.2列出微機上常用的C編譯系統(tǒng)的情況,不同的系統(tǒng)會有差異。表3.2類型比特數(shù)有效數(shù)字數(shù)值范圍float326-7-3.4x10+38 3.4x10+38double6415-16-1.7x10+308 1.7x10+308long double12818-19-1.2x10+4932 1.2x10+4932對于每一個實型變量也都應該先定義后使用。如:float x,y;double z;long double t;3、 實型數(shù)據(jù)的舍入誤差(對比:整型數(shù)據(jù)的溢出)實型變量是用有限的存儲單元
14、存儲的,因此提供的有效數(shù)字是有限的,在有效位以外的數(shù)字將被舍去,由此可能會產(chǎn)生一些誤差。例2-3a:實型數(shù)據(jù)的舍入誤差(實型變量只能保證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結論:由于實數(shù)存在舍入誤差,使用時要注意:(a) 不要試圖用一個實數(shù)
15、精確表示一個大整數(shù),記住:浮點數(shù)是不精確的。(b) 實數(shù)一般不判斷“相等”,而是判斷接近或近似。(c) 避免直接將一個很大的實數(shù)與一個很小的實數(shù)相加、相減,否則會“丟失”小的數(shù)。(d) 根據(jù)要求選擇單精度、雙精度。例2-4:根據(jù)精度要求,選擇實數(shù)類型main() float a; double b; a=33333.33333; b=33333.3333333333; printf("a=%f,b=%fn",a,b);1、4、3實型常量的類型1、 許多C編譯系統(tǒng)將實型常量作為雙精度實數(shù)來處理,這樣可以保證較高的精度,缺點是運算速度降低。在實數(shù)的后面加字符f或F,如1.65f
16、、654.87F,使編譯系統(tǒng)按單精度處理實數(shù)。2、 實型常量可以賦值給一個float、double、long double型變量。根據(jù)變量的類型截取實型常量中相應的有效數(shù)字。1、5 字符型數(shù)據(jù)1、5、1字符常量字符常量是用單引號()括起來的一個字符。字符常量主要用下面幾種形式表示:1、 可顯示的字符常量直接用單引號括起來,如,a、x、D、?、$等都是字符常量。2、 所有字符常量(包括可以顯示的、不可顯示的)均可以使用字符的轉義表示法表示(ASCII碼表示)。轉義表示格式:ddd或xhh(其中ddd,hh是字符的ASCII碼,ddd八進制、hh十六進制)。注意:不可寫成0xhh或0ddd(整數(shù))
17、。3、 預先定義的一部分常用的轉義字符。如n-換行,t-水平制表。例2-5:(P.15.)分析數(shù)據(jù)的格式輸出。注意:b,t對輸出的控制作用。例2-6:(P.16.)分析數(shù)據(jù)的格式輸出。注意:在打印機打印和在顯示器上輸出的不同效果。打印機打印過的地方可以永久保留,顯示器不能在同一個位置只能顯示最后輸出的字符。1、5、2字符變量字符型變量是用來存放字符數(shù)據(jù),同時只能存放一個字符。所有編譯系統(tǒng)都規(guī)定以一個字節(jié)來存放一個字符,或者說,一個字符變量在內存中占一個字節(jié)。1、5、3字符數(shù)據(jù)在內存中的存儲形式及其使用字符數(shù)據(jù)在內存中的存儲形式:以字符的ASCII碼,以二進制形式存放,占用1個字節(jié)??梢钥闯鲎址?/p>
18、數(shù)據(jù)以ASCII碼存儲的形式與整數(shù)的存儲形式類似,這使得字符型數(shù)據(jù)和整型數(shù)據(jù)之間可以通用(當作整型量)。具體表現(xiàn)為:1、 可以將整型量賦值給字符變量,也可以將字符量賦值給整型變量。2、 可以對字符數(shù)據(jù)進行算術運算,相當于對它們的ASCII碼進行算術運算。3、 一個字符數(shù)據(jù)既可以以字符形式輸出(ASCII碼對應的字符),也可以以整數(shù)形式輸出(直接輸出ASCII碼)。注意:盡管字符型數(shù)據(jù)和整型數(shù)據(jù)之間可以通用,但是字符型只占1個字節(jié),即如果作為整數(shù)使用范圍0-255(無符號)-128-127(有符號)。例2-7a:給字符變量賦以整數(shù)(字符型、整型數(shù)據(jù)通用)main() /* 字符a的各種表達方法
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ù)=>機內表示(兩個字節(jié))=>取低8位賦值給字符變量例2-8a:大小寫字母的轉換(ASCII碼表:小寫字母比對應的大寫字母的ASCII碼大32,本例還可以看出允許字符數(shù)據(jù)與整數(shù)直接進行算術運算,運算時字符數(shù)據(jù)用ASCII碼值參與運算)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ī)定:在每個字符串的結尾加一個“字符串結束標志”,以便系統(tǒng)據(jù)此判斷字符串是否結束。C規(guī)定以0(ASCII碼為0的字符)作為字符串結束標志。如:“CHINA”在內存中的存儲應當是:(長度=6)
22、CHINA02、 不能將字符串賦給字符變量。3、 C語言沒有專門的字符串變量,如果想將一個字符串存放在變量中,可以使用字符數(shù)組。即用一個字符數(shù)組來存放一個字符串,數(shù)組中每一個元素存放一個字符。1、6 變量賦初值程序中常常需要對一些變量預先設置初值,C語言允許在定義變量的同時使變量初始化。例如:int a=3; /* 指定a為整型變量,初值為3 */float f=3.56; /* 指定f為實型變量,初值為3.56 */char c=a; /* 指定c為字符型變量,初值為a */可以只對定義的一部分變量賦初值。int a,b=2,c=5; /* 指定a,b,c為整型變量,只對b、c初始化,b的初值為2 ,c的初值為5*/初始化不是在編譯階段完成的,而是在程序運行時執(zhí)行本函數(shù)時賦予初值的,相當于有一個賦值語句。int a=3;相當于:int a;a=3;1、7 各類數(shù)值型數(shù)據(jù)(整型、實型、字符型)的混合運算整型(包括int,short,long)和實型(包括float,double)數(shù)據(jù)可以混合運算,另外字符型數(shù)據(jù)和整型數(shù)據(jù)可以通用,因此,整型、實型、字符型數(shù)據(jù)之間可以混合運算。例如:表達式10+a+1.5-8765.1234*b是合法的。在進行運算時,不同類型的數(shù)據(jù)先轉換成同一類型,然后進行計算,轉換的方法有兩種:自動轉換(隱式
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 人力資源行業(yè)客服工作感悟
- 2025商品購銷合同協(xié)議書
- 2025標準的公司借款合同范本
- 2025建設工程施工合同示范文本
- 2025借款合同的標準格式
- 探索學生早餐與學習效率的關聯(lián)
- 小學生在實踐活動中的情緒管理教育
- 商業(yè)文案與小學生寫作能力培養(yǎng)的關聯(lián)
- 2025共同投資合同模板
- 探索數(shù)字化轉型背景下CRM的未來發(fā)展
- 2025年度愛讀書學長主辦的讀書挑戰(zhàn)賽組織合同
- 2024年滄州經(jīng)濟開發(fā)區(qū)招聘社區(qū)工作者筆試真題
- 中外美術史試題及答案
- 2025年安徽省銅陵市公安局交警支隊招聘交通輔警14人歷年高頻重點提升(共500題)附帶答案詳解
- 公共政策分析 課件 第8章政策評估;第9章政策監(jiān)控
- 人教版八年級上學期物理期末復習(壓軸60題40大考點)
- 企業(yè)環(huán)保知識培訓課件
- 2024年度管理評審報告
- 暨南大學《微觀經(jīng)濟學》2023-2024學年第一學期期末試卷
- 醫(yī)藥銷售合規(guī)培訓
- DB51-T 5038-2018 四川省地面工程施工工藝標準
評論
0/150
提交評論