1. 基本數(shù)據(jù)類型:基本數(shù)據(jù)類型最主要的特點(diǎn)是,,其值不可以再分解為其它類型。也就是
說(shuō),,基本數(shù)據(jù)類型是自我說(shuō)明的,。 2. 構(gòu)造數(shù)據(jù)類型:構(gòu)造數(shù)據(jù)類型是根據(jù)已定義的一個(gè)或多個(gè)數(shù)據(jù)類型用構(gòu)造的方法來(lái)定義 的。也就是說(shuō),,一個(gè)構(gòu)造類型的值可以分解成若干個(gè)“成員”或“元素”,。每個(gè)“成員” 都是一個(gè)基本數(shù)據(jù)類型或又是一個(gè)構(gòu)造類型。在C 語(yǔ)言中,,構(gòu)造類型有以下幾種: ·數(shù)組類型 ·結(jié)構(gòu)體類型 ·共用體(聯(lián)合)類型 3. 指針類型:指針是一種特殊的,,同時(shí)又是具有重要作用的數(shù)據(jù)類型。其值用來(lái)表示某個(gè) 變量在內(nèi)存儲(chǔ)器中的地址,。雖然指針變量的取值類似于整型量,,但這是兩個(gè)類型完全不 數(shù)值是以補(bǔ)碼表示的: 碼相同,; 值的二進(jìn)制形式按位取反再加 1。 0 的補(bǔ)碼: 0 0 0 0 0 0 0 0 0 0 1 0 1 0 正數(shù)的補(bǔ)碼和原 負(fù)數(shù)的補(bǔ)碼:將該數(shù)的絕對(duì) 例如: 求-1 10 的原碼: 0 0 取反: 1 1 1 1 1 1 1 1 1 1 1 1 0 1 0 1 再加1,, -1 1 1 1 1 1 1 1 0 1 1 0 得0 的補(bǔ)碼: 1 1 1 1 1 由此可知左第符,。 2. 整型 符為int,在內(nèi)存中占2 個(gè)字節(jié),。 取值范圍均與基本型相同,。 成: t 或unsigned。 符號(hào)類型量相同,。但由于省去了符 表示32767 1 1 1 1 1 1 1 1 1 1 ,, 面的一位是表示號(hào)的 變量的分類 1) 基本型:類型說(shuō)明 2) 短整量:類型說(shuō)明符為 short int 或short。所占字節(jié)和 3) 長(zhǎng)整型:類型說(shuō)明符為 long int 或long,,在內(nèi)存中占4 個(gè)字節(jié),。 4) 無(wú)符號(hào)型:類型說(shuō)明符為 unsigned。 無(wú)符號(hào)型又可與上述三種類型匹配而構(gòu) 無(wú)符號(hào)基本型:類型說(shuō)明符為 unsigned in 無(wú)符號(hào)短整型:類型說(shuō)明符為 unsigned short,。 無(wú)符號(hào)長(zhǎng)整型:類型說(shuō)明符為 unsigned long,。 各種無(wú)符號(hào)類型量所占的內(nèi)存空間字節(jié)數(shù)與相應(yīng)的有 號(hào)位,故不能表示負(fù)數(shù),。 有符號(hào)整型變量:最大 0 1 1 1 1 1 無(wú)符號(hào)整型變量:最大表示5 1 1 1 1 1 1 1 1 1 1 65 35 1 1 1 1 1 1 下表列出了Turbo C 中各類整型量所分配的內(nèi)存字節(jié)數(shù)及數(shù)的表示范圍,。 類型說(shuō)明符 數(shù)的范圍 字節(jié)數(shù) int -32768~32767 即-215~(215-1) 2 unsigned int 0~65535 即0~(216-1) 2 short int -32768~32767 即-215~(215-1) 2 unsigned short int 0~65535 即0~(216-1) 2 long int -2147483648~2147483647 即-231~(231-1) 4 unsigned long 0~4294967295 即0~(232-1) 4 以 13 為例: int 型: 00 00 00 00 00 00 11 01 short int 型: 00 00 00 00 00 00 11 01 long int 型: 同的量,因此不能混為一談,。
4. 空類型:在調(diào)用函數(shù)值時(shí),,通常應(yīng)向調(diào)用者返回一個(gè)函數(shù)值。這個(gè)返回的函數(shù)值是具有 一定的數(shù)據(jù)類型的,,應(yīng)在函數(shù)定義及函數(shù)說(shuō)明中給以說(shuō)明,,例如在例題中給出的max 函數(shù)定義中,函數(shù)頭為:int max(int a,int b);其中“int ”類型說(shuō)明符即表示該函數(shù)的返 回值為整型量,。又如在例題中,,使用了庫(kù)函數(shù)sin,由于系統(tǒng)規(guī)定其函數(shù)返回值為雙精 度浮點(diǎn)型,,因此在賦值語(yǔ)句s=sin (x);中,,s 也必須是雙精度浮點(diǎn)型,以便與sin 函數(shù)的 返回值一致,。所以在說(shuō)明部分,,把s 說(shuō)明為雙精度浮點(diǎn)型。但是,,也有一類函數(shù),,調(diào)用 后并不需要向調(diào)用者返回函數(shù)值,這種函數(shù)可以定義為“空類型”,。其類型說(shuō)明符為void,。 在后面函數(shù)中還要詳細(xì)介紹,。 在本章中,我們先介紹基本數(shù)據(jù)類型中的整型,、浮點(diǎn)型和字符型,。其余類型在以后各章 中陸續(xù)介紹。 3.2 常量與變量 對(duì)于基本數(shù)據(jù)類型量,,按其取值是否可改變又分為常量和變量?jī)煞N,。在程序執(zhí)行過(guò)程中, 其值不發(fā)生改變的量稱為常量,,其值可變的量稱為變量,。它們可與數(shù)據(jù)類型結(jié)合起來(lái)分類。 例如,,可分為整型常量,、整型變量、浮點(diǎn)常量,、浮點(diǎn)變量,、字符常量、字符變量,、枚舉常量,、 枚舉變量。在程序中,,常量是可以不經(jīng)說(shuō)明而直接引用的,,而變量則必須先定義后使用。 整型量包括整型常量,、整型變量,。 3.2.1 常量和符號(hào)常量 在程序執(zhí)行過(guò)程中,其值不發(fā)生改變的量稱為常量,。 直接常量(字面常量): 整型常量:12,、0、-3,; 實(shí)型常量:4.6,、-1.23; 字符常量:'a’,、'b’。 標(biāo)識(shí)符:用來(lái)標(biāo)識(shí)變量名,、符號(hào)常量名,、函數(shù)名、數(shù)組名,、類型名,、文件名的有效字符 序列,。 符號(hào)常量:用標(biāo)示符代表一個(gè)常量。在C語(yǔ)言中,,可以用一個(gè)標(biāo)識(shí)符來(lái)表示一個(gè)常量,, 稱之為符號(hào)常量。 符號(hào)常量在使用之前必須先定義,,其一般形式為: #define 標(biāo)識(shí)符常量 其中#define 也是一條預(yù)處理命令(預(yù)處理命令都以"#"開(kāi)頭),,稱為宏定義命令(在 后面預(yù)處理程序中將進(jìn)一步介紹),其功能是把該標(biāo)識(shí)符定義為其后的常量值,。一經(jīng)定 義,,以后在程序中所有出現(xiàn)該標(biāo)識(shí)符的地方均代之以該常量值。 習(xí)慣上符號(hào)常量的標(biāo)識(shí)符用大寫字母,,變量標(biāo)識(shí)符用小寫字母,,以示區(qū)別。 【例 3.1】符號(hào)常量的使用,。 #define PRICE 30 main() { int num,total; num=10,; total=num* PRICE;
printf(“total=%d”,total); } 用標(biāo)識(shí)符代表一個(gè)常量,稱為符號(hào)常量,。 符號(hào)常量與變量不同,,它的值在其作用域內(nèi)不能改變,也不能再被賦值,。 使用符號(hào)常量的好處是: 含義清楚,; 能做到“一改全改”。 3.2.2 變量 其值可以改變的量稱為變量,。一個(gè)變量應(yīng)該有一個(gè)名字,,在內(nèi)存中占據(jù)一定的存儲(chǔ)單元。 變量定義必須放在變量使用之前,。一般放在函數(shù)體的開(kāi)頭部分,。要區(qū)分變量名和變量值是兩 個(gè)不同的概念。 3.3 整型數(shù)據(jù) 3.3.1 整型常量就是整常數(shù),。在C語(yǔ)言中,,使用的整常數(shù)有八進(jìn)制、十六進(jìn)制和十進(jìn)制三 種,。 ) 十進(jìn)制整常數(shù):十進(jìn)制整常數(shù)沒(méi)有前綴,。其數(shù)碼為 0~9。 常數(shù): 制數(shù)碼),。 在程序中是根據(jù)前綴來(lái)區(qū)分各種進(jìn)制數(shù)的,。因此在書(shū)寫常數(shù)時(shí)不要把前綴弄錯(cuò)造成結(jié)果 不正確。 2) 八進(jìn)制整常數(shù):八進(jìn)制整常數(shù)必須以0 開(kāi)頭,即以0 作為八進(jìn)制數(shù)的前綴,。數(shù)碼取 a 變量名 3 變量值 存 儲(chǔ) 單 元 整型常量的表示方法 1 以下各數(shù)是合法的十進(jìn)制整常數(shù): 237,、-568、65535,、1627,; 以下各數(shù)不是合法的十進(jìn)制整 023 (不能有前導(dǎo)0)、23D (含有非十進(jìn) 值為0~7,。八進(jìn)制數(shù)通常是無(wú)符號(hào)數(shù),。 第 39 頁(yè) 以下各數(shù)是合法的八進(jìn)制數(shù):
015(十進(jìn)制為13)、0101(十進(jìn)制為65),、0177777(十進(jìn)制為65535),; 以下 進(jìn)制數(shù)碼)、-0127(出現(xiàn)了負(fù)號(hào)),。 3) 十 9,,A~F 或 數(shù)是合法的十六進(jìn)制整常數(shù): 制為 160)、0XFFFF (十進(jìn)制為65535),; 以下 數(shù)碼),。 4) 的長(zhǎng)度也為 16 位,因此表示的 整常數(shù): 158),、358000L (十進(jìn)制為358000),; 八進(jìn) 10)、077L (十進(jìn)制為63),、0200000L (十進(jìn)制為65536),; 十六進(jìn)制長(zhǎng)整常數(shù): 21)、0XA5L (十進(jìn)制為165),、0X10000L (十進(jìn)制為65536),。 長(zhǎng)整 C編 或“u”。 u,0x38Au,235Lu 均為無(wú)符號(hào)數(shù),。 前綴,,后綴可同時(shí)使用以表示各種類型的數(shù)。如 0XA5Lu 表示十六進(jìn)制無(wú)符號(hào)長(zhǎng) 整數(shù) 3.3.2 整型變量 1. 整型數(shù)據(jù)在內(nèi)存中的存放形式 i 0 0 0 0 0 0 0 0 0 0 0 0 1 0 1 0 各數(shù)不是合法的八進(jìn)制數(shù): 256(無(wú)前綴0),、03A2(包含了非八 六進(jìn)制整常數(shù):十六進(jìn)制整常數(shù)的前綴為0X 或0x,。其數(shù)碼取值為0~ a~f。 以下各 0X2A(十進(jìn)制為42),、0XA0 (十進(jìn) 各數(shù)不是合法的十六進(jìn)制整常數(shù): 5A (無(wú)前綴0X),、0X3H (含有非十六進(jìn)制 整型常數(shù)的后綴:在16 位字長(zhǎng)的機(jī)器上,基本整型 數(shù)的范圍也是有限定的,。十進(jìn)制無(wú)符號(hào)整常數(shù)的范圍為0~65535,,有符號(hào)數(shù)為 -32768~+32767,。八進(jìn)制無(wú)符號(hào)數(shù)的表示范圍為0~0177777。十六進(jìn)制無(wú)符號(hào)數(shù) 的表示范圍為0X0~0XFFFF 或0x0~0xFFFF,。如果使用的數(shù)超過(guò)了上述范圍,就 必須用長(zhǎng)整型數(shù)來(lái)表示,。長(zhǎng)整型數(shù)是用后綴“L”或“l(fā)”來(lái)表示的,。 例如: 十進(jìn)制長(zhǎng) 158L (十進(jìn)制為 制長(zhǎng)整常數(shù): 012L (十進(jìn)制為 0X15L (十進(jìn)制為 數(shù)158L 和基本整常數(shù)158 在數(shù)值上并無(wú)區(qū)別。但對(duì)158L,,因?yàn)槭情L(zhǎng)整型量,, 譯系統(tǒng)將為它分配4 個(gè)字節(jié)存儲(chǔ)空間。而對(duì)158,,因?yàn)槭腔菊?,只分? 個(gè)字 節(jié)的存儲(chǔ)空間。因此在運(yùn)算和輸出格式上要予以注意,,避免出錯(cuò),。 無(wú)符號(hào)數(shù)也可用后綴表示,整型常數(shù)的無(wú)符號(hào)數(shù)的后綴為“U” 例如: 358 A5,,其十進(jìn)制為165,。 如果定義了一個(gè)整型變量i: int i; i=10; 10 0 0 0 0 0 0 0 0 0 0 0 0 1 0 1 0
第 40 00 00 00 00 00 00 00 00 00 00 00 00 00 00 11 01 unsigned int 型: 00 00 00 00 00 00 11 01 unsigned short int 型: 00 00 00 00 00 00 11 01 unsigned long int 型: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 11 01 3. 整型變量的定義 變量定義的一般形式為: 類型說(shuō)明符 變量名標(biāo)識(shí)符,變量名標(biāo)識(shí)符,,...,; 例如: int a,b,c; (a,b,c 為整型變量) long x,y; (x,y 為長(zhǎng)整型變量) unsigned p,q; (p,q 為無(wú)符號(hào)整型變量) 在書(shū)寫變量定義時(shí),應(yīng)注意以下幾點(diǎn): 允許在一個(gè)類型說(shuō)明符后,,定義多個(gè)相同類型的變量,。各變量名之間用逗號(hào)間隔。 類型說(shuō)明符與變量名之間至少用一個(gè)空格間隔,。 最后一個(gè)變量名之后必須以“,;”號(hào)結(jié)尾。 變量定義必須放在變量使用之前,。一般放在函數(shù)體的開(kāi)頭部分,。 【例 3.2】整型變量的定義與使用。 main() { int a,b,c,d; unsigned u; a=12;b=-24;u=10; c=a+u;d=b+u; printf(“a+u=%d,b+u=%d\n”,c,d); } 4. 整型數(shù)據(jù)的溢出 【例 3.3】整型數(shù)據(jù)的溢出,。 main() { int a,b; a=32767; b=a+1; printf("%d,%d\n",a,b); } 32767: 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 第42 頁(yè) -32768
1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 【例3.4】 main(){ long x,y; int a,b,c,d; x=5; y=6; a=7; b=8; c=x+a; d=y+b; printf("c=x+a=%d,d=y+b=%d\n",c,d); } 從程序中可以看到:x, y 是長(zhǎng)整型變量,,a, b 是基本整型變量。它們之間允許進(jìn)行運(yùn)算,, 運(yùn)算結(jié)果為長(zhǎng)整型,。但c,d 被定義為基本整型,,因此最后結(jié)果為基本整型,。本例說(shuō)明,,不 同類型的量可以參與運(yùn)算并相互賦值。其中的類型轉(zhuǎn)換是由編譯系統(tǒng)自動(dòng)完成的,。有關(guān)類型 轉(zhuǎn)換的規(guī)則將在以后介紹,。 3.4 實(shí)型數(shù)據(jù) 3.4.1 實(shí)型常量的表示方法 實(shí)型也稱為浮點(diǎn)型。實(shí)型常量也稱為實(shí)數(shù)或者浮點(diǎn)數(shù),。在C語(yǔ)言中,,實(shí)數(shù)只采用十進(jìn) 制。它有二種形式:十進(jìn)制小數(shù)形式,,指數(shù)形式,。 1) 十進(jìn)制數(shù)形式:由數(shù)碼 0~ 9 和小數(shù)點(diǎn)組成。 例如: 0.0,、25.0,、5.789、0.13,、5.0,、300.、-267.8230 等均為合法的實(shí)數(shù),。注意,,必須有小數(shù)點(diǎn)。 2) 指數(shù)形式:由十進(jìn)制數(shù),,加階碼標(biāo)志“e”或“E”以及階碼(只能為整數(shù),,可以帶符 號(hào))組成。 其一般形式為: a E n(a 為十進(jìn)制數(shù),,n 為十進(jìn)制整數(shù)) 其值為 a*10n,。 如: 2.1E5 (等于2.1*105) 3.7E-2 (等于3.7*10-2) 0.5E7 (等于0.5*107) -2.8E-2 (等于-2.8*10-2) 以下不是合法的實(shí)數(shù): 345 (無(wú)小數(shù)點(diǎn)) 第43 頁(yè) E7 (階碼標(biāo)志E 之前無(wú)數(shù)字)
-5 (無(wú)階碼標(biāo)志) 53.-E3 (負(fù)號(hào)位置不對(duì)) 2.7E (無(wú)階碼) 標(biāo)準(zhǔn)C允許浮點(diǎn)數(shù)使用后綴。后綴為“f”或“F”即表示該數(shù)為浮點(diǎn)數(shù),。如356f 和356. 是等價(jià)的,。 【例 3.5】說(shuō)明了這種情況。 main(){ printf("%f\n ",356.); printf("%f\n ",356); printf("%f\n ",356f); } |
|
來(lái)自: zcm1944 > 《學(xué)習(xí)筆記》