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