C++中定義了一組表示整數、浮點數、單個字符和布爾值的算術類型(arithmetic type)。
另外還定義了一種叫做void的特殊類型。void類型沒有對應的值,僅用在有限的一些情況下,通常用作無返回值函數的返回類型。
算術類型的存儲空間依機器而定。這里的存儲空間是指用來表示該類型的二進制位(bit)數。
C++標准規定了每個算術類型的最小存儲空間,但它並不阻止編譯器使用更大的存儲空間。
事實上,對於int類型,幾乎所有的編譯器使用的存儲空間都比所要求的大。
因為位數不同,這些類型所能表示的最大(最小)值也因機器的不同而有所不同。
C++算術類型的最小存儲空間
類型+含義+最小存儲空間如下:
bool 布爾型
char 字符型 8位
wchar_t 寬字符型 16位
short 短整型 16位
int 整形 16位
long 長整形 32位
float 單精度浮點型 6為有效數字
double 雙精度浮點型 10位有效數字
long double 擴展精度浮點型 10位有效數字
整形
表示整數、字符和布爾值的算術類型合稱為整形(integral type)。
通常將8位的塊作為一個字節,32位或4個字節作為一個字(word).
一般的,short類型為半個機器字(word)長,int類型為一個機器字長,而long類型為一個或兩個機器字長(在32位機器中int類型和long類型通常字長是相同的)。
bool類型表示true和false。可以將算術類型的任何值賦給bool對象。
0值算術類型代表false,其他任何非零的值都代表true。
符號
除bool類型外,整形可以是帶符號的(signed)也可以是無符號的(unsigned)。
無符號類型只能表示大於等於0的數,而帶符號整形可以表示正數和負數。
整形int,short和long都默認為帶符號型。
要獲得無符號型則必須指定該類型為unsigned。比如unsigned long。
unsigned int 可以簡寫為unsigned。
浮點型
類型float、double和long double分別表示單精度浮點數、雙精度浮點數和擴展精度浮點數。
一般float用一個字(32位)來表示,double類型用兩個字(64位來表示),long double類型用三個或四個字(96或128位)來表示。
float型只能保證6位有效數字,而double型至少可以保證10位有效數字。
參考資料
《C++ Primer中文第四版》