3 回答

TA貢獻(xiàn)1797條經(jīng)驗(yàn) 獲得超6個(gè)贊
1、C語言的數(shù)據(jù)類型分類
C語言的數(shù)據(jù)類型分類:
基本數(shù)據(jù)類型:
整型int
字符型char
浮點(diǎn)型:
單精度浮點(diǎn)型float
雙精度浮點(diǎn)型double
構(gòu)造數(shù)據(jù)類型:
數(shù)組(如int a[])
結(jié)構(gòu)體struct
聯(lián)合體(或叫共用體)union
枚舉類型enum
指針類型(如int *p)
空類型void
2、int,unsigned int,short,long
1)整型int:
大?。?6位2字節(jié) 或 32位4字節(jié)(取決于編譯器)
存儲格式:0~30位是數(shù)據(jù)位,第31位是符號位,用0代表正數(shù),1代表負(fù)數(shù)。負(fù)數(shù)用補(bǔ)碼存儲。
存儲范圍:-2^31 ~ 2^31-1
打印格式:%d(十進(jìn)制)、%o(八進(jìn)制)、%x或%X(十六進(jìn)制)
說明:
int類型用于存放整數(shù),占16或32位(取決于編譯器),2或4字節(jié)。其中第31位為符號位(符號位0代表正數(shù),1代表負(fù)數(shù)),后面幾位為數(shù)據(jù)位
負(fù)數(shù)在內(nèi)存中是以補(bǔ)碼的形式存儲的。
(補(bǔ)碼:按位取反,末位+1)
(用補(bǔ)碼存儲,正0和負(fù)0相同)
(對一個(gè)整數(shù)求補(bǔ)碼再求補(bǔ)碼,等于自身)
有十進(jìn)制,八進(jìn)制,十六進(jìn)制三種存儲方法
八進(jìn)制輸入輸出格式化使用%o。八進(jìn)制數(shù)以0開頭,如0666
十六進(jìn)制輸入輸出格式化使用%x或%X。十六進(jìn)制數(shù)以0x開頭,如0x12345678
2)無符號整型unsigned int:
大?。和琲nt型
存儲格式:0~31位都是數(shù)據(jù)位,無符號位
存儲范圍:0 ~ 2^32-1
打印格式:%u
說明:
與int型基本相同,區(qū)別是int型的符號位不再是符號位而也作為數(shù)據(jù)位,因此無符號整型數(shù)據(jù)比整型數(shù)據(jù)存儲范圍大2倍,不過無法存儲負(fù)數(shù)
適用于只有正數(shù)的情況
unsigned關(guān)鍵字不僅僅可以修飾int類型,還可修飾short long float等類型。
注意:unsigned關(guān)鍵字修飾的變量無法接收負(fù)數(shù)。
無符號數(shù)的輸入輸出格式控制是%u
3)短整型short:
大小:16位2字節(jié)
存儲格式:0~14位為數(shù)據(jù)位,第15位為符號位,用0代表正數(shù),1代表負(fù)數(shù)
存儲范圍:-32768 ~ 32767
打印格式:%h
說明:
short類型與int類型類似,只不過是16位,2字節(jié)。第15位為符號位,后面幾位為數(shù)據(jù)位
short類型適用于存儲不太大的數(shù)據(jù),節(jié)省內(nèi)存空間。
short類型的輸入輸出格式控制是%h
4)長整型long:
大?。?2位4字節(jié)
存儲格式:同32位int類型
存儲范圍:同32位int類型
打印格式:%ld
說明:
在過去的16位編譯器中,int型是16位,所以long類型是32位。
不過在現(xiàn)代的32位編譯器中,int型與long類型已無本質(zhì)區(qū)別。
如果需要考慮程序跨平臺移植(如16位編譯器<--->32位編譯器)需要謹(jǐn)慎選擇使用int還是long
3、char類型:
大小:8位1字節(jié)
存儲格式:0~6位都為數(shù)據(jù)位(128) 或 0~7位都為數(shù)據(jù)位(256,擴(kuò)展后的ASCII表)
存儲范圍:0 ~ 255
打印格式:%c
說明:
----------------------------ASCII表與轉(zhuǎn)義字符----------------------------------------
在計(jì)算機(jī)的編碼中,字符是使用ASCII表進(jìn)行編碼的。每一個(gè)字符都有一個(gè)對應(yīng)的數(shù)字,例如:
'A'--->65
'a'--->97
'0'--->48 等
除了常見的數(shù)字、字母、符號(如+-*/%等)外,ASCII表還存儲了一些看不見的控制字符,如:
空或'\0'(字符串結(jié)束標(biāo)志)--->0
空格--->32
任意的ASCII表內(nèi)字符都可以用'\'+數(shù)字(八進(jìn)制)的方式來表示,有些還可以用'\'+字符來表示,稱之為轉(zhuǎn)義字符。轉(zhuǎn)義字符即在'\'后的字符不代表了它本來的含義。
常見的轉(zhuǎn)義字符:
\a:蜂鳴器
\b:backspace退格鍵
\n:換行,光標(biāo)移動(dòng)至下行行首
\r:光標(biāo)移動(dòng)至本行行首
\f:換頁
\t:tab水平制表符
\\:輸出\
\':輸出'
\":輸出"
\?:輸出?
\0:NULL字符串結(jié)束標(biāo)志
----------------------------ASCII表與轉(zhuǎn)義字符end-------------------------------------
4、float與double
----------------浮點(diǎn)數(shù)的存儲-------------------------
浮點(diǎn)數(shù)分為float類型(32位)和double類型(64位)
其中一位是符號位,代表整個(gè)數(shù)的正負(fù)
一位是指數(shù)符,代表指數(shù)部分的正負(fù)
尾數(shù)表示0.XXXXXXX(浮點(diǎn)數(shù)的有效數(shù)字),但不存0和.
指數(shù)表示指數(shù)的有效數(shù)字
因此,尾數(shù)代表了浮點(diǎn)數(shù)的精度,指數(shù)代表了浮點(diǎn)數(shù)的范圍
浮點(diǎn)數(shù)存儲的小數(shù)不是實(shí)際值,只能是近似值(如1/3,只會存儲0.333333)
----------------浮點(diǎn)數(shù)的存儲end----------------------
1)float類型:
單精度浮點(diǎn)型
大?。?2位4字節(jié)
存儲格式:符號位(1位)+尾數(shù)(23位)+指數(shù)(8位,含1位符號位)
精度:小數(shù)部分最多有效7位,有效6位(2^23=8388608,所以是7位)
存儲范圍:-3.40E+38 ~ +3.40E+38(即-2^128 ~ 2^128)
打印格式:%f(十進(jìn)制計(jì)數(shù)法),%e(指數(shù)計(jì)數(shù)法)
2)double類型:
雙精度浮點(diǎn)型
大?。?4位8字節(jié)
存儲格式:符號位(1位)+尾數(shù)52(位)+指數(shù)(11位,含1位符號位)
精度:小數(shù)部分最多有效16位,有效15位(2^52=4503599627370496,所以是16位)
存儲范圍:-1.79E+308 ~ +1.79E+308(即-2^1024 ~ 2^1024)
打印格式:同float類型
注意:double類型是8字節(jié)而float類型是4字節(jié),因此double型比float型的數(shù)據(jù)更加精確,但計(jì)算速度會更慢。
3)long double類型:
大小:96位12字節(jié)
存儲格式:同double類型
精度:同double類型
存儲范圍:同double類型
打印格式:%lf,%le

TA貢獻(xiàn)1872條經(jīng)驗(yàn) 獲得超4個(gè)贊
存儲類型關(guān)鍵字有如下4個(gè):
1 auto :聲明自動(dòng)變量。
此項(xiàng)為缺省值。auto int a;和int a;是完全相同的。所以在編程中一般看不到auto的使用。
2 extern:聲明外部變量。
功能為擴(kuò)展全局變量的作用域。
3 register:聲明寄存器變量。
聲明后,變量存儲于CPU寄存器中。是最快的C語言變量。
但是需要注意的是,CPU寄存器有限的,所以并不是所有聲明為register的變量都會存在寄存器中。使用register更像是一個(gè)申請,具體是否可以存在寄存器還要看系統(tǒng)情況。 該項(xiàng)盡量少用。
4 static :聲明靜態(tài)變量。
有靜態(tài)局部變量和靜態(tài)全局變量兩種。用于局部變量時(shí),將變量聲明周期延長到整個(gè)程序運(yùn)行。用于全局變量時(shí),將全局變量作用域限定在本文件。
- 3 回答
- 0 關(guān)注
- 733 瀏覽
添加回答
舉報(bào)