| 程式在執行的過程中,需要運算許多的資訊,也需要儲存許多的資訊,資訊是儲存在記憶體空間中,由於資料的型態各不相同,在儲存時所需要的容量不一,不同的資料必須要配給不同的空間大小來儲存,因而有了「資料型態」(Data type)的規範。 C中基本的資料型態主要區分為「整數」(Integer)、「浮點數」(Float)、「字元」(Character),而這幾種還可以細分,如下所示:
用來表示整數值,可以區分為short、int、與long,所配置的記憶體長度在不同的編譯器上各不相同,可容納的大小各不相同,在Dev C++的編譯器下,short為2位元組、int與long為4位元組,型態的長度越長,表示可表示的整數值範圍越大。
用來表示小數值,可以區分為float、double與long double,在Dev C++編譯器上,float的長度為一個4個位元組,double的長度為8個word,long double長度為12個word。
用來儲存字元,長度為1個位元組,其字元編碼主要依ASCII表而來,由於字元在記憶體中所佔有的空間較小,所以它也可以用來儲存較小範圍的整數。
以上的資料型態在記憶體中所佔有的大小依編譯器而有所差異,如果想要知道這些資料型態在您所使用的平台上,所佔有的記憶體空間有多少,最好的作法是使用sizeof()運算子,它可以告訴您確實的記憶體大小,下面這個程式是個簡單的示範: #include <stdio.h> 其中'\t'是跳格字元,它相當於在主控台中按下Tab鍵的效果,可以用來對齊下一個顯示位置,%d為格式指定碼,表示該位置將放置一個整數數字,即由 sizeof(() 所計算出來的數字取代,在 終端機輸出輸入(Input/Output)中,將針對格式控制作進一步說明。 以下是執行結果:
由於使用的平台不同,您的結果不一定會與這邊的結果相同;因為每種資料型態所佔有的記憶體大小不同,因而可以儲存 的數值範圍也就不同,例如在上例中,整數 int的記憶體空間是4個位元組,所以它可以儲存的整數範圍為-2147483648至2147483647,如果儲存值超出這個範圍的話稱之為「溢值」 (Overflow),會造成程式不可預期的結果。 整數計算範圍的方式很簡單,例如int整數佔4位元組的話,可儲存範圍為2^32 / 2,除以2是因為要分另一半儲存負整數的關係,整數的最左邊位元被用來表示正負號,如果最左邊位元為0表示正號,若為1則表示負號,在C中還可以宣告 無正負號整數,此時最左邊位元不用來表示正負號,例如一個8位元字元被用來表示整數時,可以表示數值-128到127,而一個無正負號字元則可以表示0到 255的正整數。宣告無號整數的方式,在 變數(Variable)中會有說明。 浮點數的儲存方式則是分為兩個部份,例如float佔四個位元組的話,前三個位元組是用來儲存假數,後一個位元組儲存指數,例如3.14*10^8, 3.14儲存在前三位元組,而8儲存於後一位元組,所以float大致上可以儲存的範圍為10^38到10^-38(就指數來算出的),而double則 可以大致儲存10^308至10^-308之間的數值。 |