什么是C51中的基本數(shù)據(jù)類型
數(shù)據(jù)元(Data Element),也稱為數(shù)據(jù)元素,是用一組屬性描述其定義、標(biāo)識(shí)、表示和允許值的數(shù)據(jù)單元,在一定語(yǔ)境下,通常用于構(gòu)建一個(gè)語(yǔ)義正確、獨(dú)立且無(wú)歧義的特定概念語(yǔ)義的信息單元。數(shù)據(jù)元可以理解為數(shù)據(jù)的基本單元,將若干具有相關(guān)性的數(shù)據(jù)元按一定的次序組成一個(gè)整體結(jié)構(gòu)即為數(shù)據(jù)模型。
基本屬性
(1)標(biāo)識(shí)類屬性:適用于數(shù)據(jù)元標(biāo)識(shí)的屬性。包括中文名稱、英文名稱、中文全拼、內(nèi)部標(biāo)識(shí)符、版本、注冊(cè)機(jī)構(gòu)、同義名稱、語(yǔ)境。
(2)定義類屬性:描述數(shù)據(jù)元語(yǔ)義方面的屬性。包括定義、對(duì)象類詞、特性詞、應(yīng)用約束。
(3)關(guān)系類屬性:描述各數(shù)據(jù)元之間相互關(guān)聯(lián)和(或)數(shù)據(jù)元與模式、數(shù)據(jù)元概念、對(duì)象、實(shí)體之間關(guān)聯(lián)的屬性。包括分類方案、分類方案值、關(guān)系。
(4)表示類屬性:描述數(shù)據(jù)元表示方面的屬性。包括表示詞、數(shù)據(jù)類型、數(shù)據(jù)格式、值域、計(jì)量單位。
(5)管理類屬性:描述數(shù)據(jù)元管理與控制方面的屬性。包括狀態(tài)、提交機(jī)構(gòu)、批準(zhǔn)日期、備注。
很多初學(xué)者對(duì)數(shù)據(jù)類型是什么東西搞不明白,我們舉個(gè)簡(jiǎn)單例子。
設(shè)X=10,Y=L Z=X+Y,求Z=?在這個(gè)例子當(dāng)中,我們將10和I分別賦給X和Y,再將X+Y賦給乙由于10已經(jīng)固定,我們稱X為“常量”;由于Y的值隨I值的變化而變化,Z的值隨X+Y值的變化而變化,我們稱Y和Z為“變量”,本題中X的值為10,而Y的值為L(zhǎng)但其他題中X的值有可能就是10000,Y的值有可能就是別的什么數(shù)了。在我們?nèi)粘S?jì)算時(shí),X和Y的值我們可以賦給它任意大小的數(shù),當(dāng)我們給單片機(jī)編程時(shí),單片機(jī)也要運(yùn)算,而在單片機(jī)的運(yùn)算中,這個(gè)“變量”數(shù)據(jù)的大小是有限制的,我們不能隨意給一個(gè)變量賦任意的值,因?yàn)樽兞吭趩纹瑱C(jī)的內(nèi)存中是要占據(jù)空間的,變量大小不同,所占據(jù)的空間就不同,為了合理利用單片機(jī)內(nèi)存空間,我們?cè)诰幊虝r(shí)就要設(shè)定合適的數(shù)據(jù)類型,不同的數(shù)據(jù)類型也就代表了十進(jìn)制中不同的數(shù)據(jù)大小,所以我們?cè)谠O(shè)定一個(gè)變量之前,必須要給編譯器聲明這個(gè)變量的類型,以便讓編譯器提前從單片機(jī)內(nèi)存中分配給這個(gè)變量合適的空間。單片機(jī)的C語(yǔ)言中常用的數(shù)據(jù)類型如表1.6.1所示。
大家在C語(yǔ)言的書籍上還能看到有short int,long int,signed short int等數(shù)據(jù)類型,在單片機(jī)的C語(yǔ)言中我們默認(rèn)的規(guī)則如下:short int即為int,long int即為long,前面若無(wú)unsigned符號(hào)則一律認(rèn)為是signed型。
關(guān)于所占位數(shù)的解釋:在編寫程序時(shí),無(wú)論是以十進(jìn)制、十六進(jìn)制還是二進(jìn)制表示的數(shù),在單片機(jī)中,所有的數(shù)據(jù)都是以二進(jìn)制形式存儲(chǔ)在存儲(chǔ)器中的,既然是二進(jìn)制,那么就只有兩個(gè)數(shù),0和1,這兩個(gè)數(shù)每一個(gè)所占的空間就是一位(b),位也是單片機(jī)存儲(chǔ)器中最小的單位。
比位大的單位是字節(jié)(B),一個(gè)字節(jié)等于8位(即lB=8b)o我們從表1.6.1可以看出,除了位,字符型占存儲(chǔ)器空間最小,為8位,雙精度實(shí)型最大,為64位。其中float型和double型是用來(lái)表示浮點(diǎn)數(shù)的,也就是我們所講的帶有小數(shù)點(diǎn)的數(shù),如12.234,0.213等。在這里需要說(shuō)明的是,在一般的系統(tǒng)中,float型數(shù)據(jù)只能提供7位有效數(shù)字,double型數(shù)據(jù)能夠提供15?16位有效數(shù)字,但是這個(gè)精度還和編譯器有關(guān)系,并不是所有的編譯器都遵守這條原則。當(dāng)把一個(gè)double型變'量賦給float型變量時(shí),系統(tǒng)會(huì)截取相應(yīng)的有效位數(shù)。例如:
由于float型變量只能接收7位有效數(shù)字,因此最后的3位小數(shù)將會(huì)被四舍五入截掉,即實(shí)際a的值將是123.1235。若將a改成double型變量,則能全部接收上述10位數(shù)字并存儲(chǔ)在變量a中。