
引自行者三個(gè)石
寫在前面
- 圖中是C語言的所有數(shù)據(jù)類型,在計(jì)算機(jī)中,數(shù)據(jù)是存儲(chǔ)在計(jì)算機(jī)中的一個(gè)個(gè)單元里面,它是具體存在的。而且,存儲(chǔ)單元是由有限的字節(jié)構(gòu)成的,每一個(gè)存儲(chǔ)單元存儲(chǔ)的數(shù)據(jù)是有限的,不可能存放無限大的數(shù),也不能存放無限循環(huán)小數(shù).
- 計(jì)算機(jī)內(nèi)存:在執(zhí)行程序時(shí),組成程序的指令和數(shù)據(jù)都必須存儲(chǔ)在計(jì)算機(jī)內(nèi)存中,即RAM。
- RAM其實(shí)可以看成是一排井然有序的盒子。每個(gè)盒子有兩種狀態(tài):0和1,也就是代表一個(gè)二進(jìn)制數(shù):0或者1。每個(gè)盒子稱為一個(gè)位(bit)。每8個(gè)位組成一個(gè)字節(jié)(byte)。計(jì)算機(jī)中,一個(gè)英文字母是一個(gè)字節(jié),中文漢字是兩個(gè)字節(jié)。
整數(shù)類型
- 基本類型(int類型)
我們的gcc是給每個(gè)整數(shù)型分配四個(gè)字節(jié)(32個(gè)二進(jìn)位)。所以四個(gè)字節(jié)的整數(shù)型取值范圍是 -2^31 到(2^31-1)。 - 短類型(short類型)
gcc分配給2個(gè)字節(jié),取值 -2^15 到(2^15-1)。 - 長(zhǎng)整型(long類型)
gcc分配8個(gè)字節(jié),取值范圍:-2^63 到(2^63-1)。
浮點(diǎn)型數(shù)據(jù)
浮點(diǎn)型數(shù)據(jù)是用來表示具有小數(shù)點(diǎn)的實(shí)數(shù)的。為什么叫浮點(diǎn)型?因?yàn)樵贑語言中,實(shí)數(shù)是以指數(shù)的形式存放在存儲(chǔ)單元的。而實(shí)數(shù)的指數(shù)可以變化,通過移動(dòng)小數(shù)點(diǎn)的位置,而整個(gè)實(shí)數(shù)值是不會(huì)發(fā)生變化的,因此叫做浮點(diǎn)型。
- float(單精度)
gcc編譯系統(tǒng)為其分配4個(gè)字節(jié),存儲(chǔ)時(shí)分為小數(shù)部分和指數(shù)部分,分別存儲(chǔ)可以得到7位。 - double(雙精度)
用8個(gè)字節(jié)(64位)存儲(chǔ)一個(gè)double型數(shù)據(jù),可以得到15位有效數(shù)字。 - long double
用16個(gè)字節(jié)(128位)存儲(chǔ)一個(gè)long double型數(shù)據(jù)型,可以得到18位有效數(shù)據(jù)。
字符型
字符型常量通常是用單引號(hào)括起來的一個(gè)字符,所有的編譯系統(tǒng)中,都是用1個(gè)字節(jié)(8位)來存放一個(gè)字符。字符型數(shù)據(jù)在存儲(chǔ)時(shí),是通過相應(yīng)的ASCII碼值放到存儲(chǔ)單元中。字符常量,是區(qū)分大小寫的,因?yàn)閷?duì)于的ASCII碼不同。
字符串常量
- 字符串常量是用一對(duì)雙引號(hào)括起來的零個(gè)或多個(gè)字符組成的序列,如 "hello","chine","f" 都是字符串常量。
- 字符串常量的存儲(chǔ)與字符常量的存儲(chǔ)是不同的。字符串中的每個(gè)字符占用一個(gè)字節(jié),在存儲(chǔ)字符串常量時(shí)還要自動(dòng)在其末尾加上 '\0' 作為字符串結(jié)束的標(biāo)志。
所以大家一定要區(qū)別清楚,'a'和"a"是完全不同的。前者是字符常量,一個(gè)字節(jié);而后者是字符串常量,有兩個(gè)字節(jié),‘b’和'\0'.