當(dāng)在使用任何編程語(yǔ)言編程時(shí),您需要使用各種不同的變量來(lái)存儲(chǔ)不同的信息。變量只是讓內(nèi)存預(yù)留位置來(lái)存儲(chǔ)一些值。這意味著,當(dāng)你創(chuàng)建一個(gè)變量時(shí)在內(nèi)存中會(huì)保留一些空間給該變量。
你可能喜歡使用像字符類型,寬字符,整數(shù),浮點(diǎn)數(shù),雙精度浮點(diǎn)數(shù),布爾類型等各種數(shù)據(jù)類型來(lái)存儲(chǔ)信息。操作系統(tǒng)基于變量的數(shù)據(jù)類型來(lái)分配內(nèi)存空間和決定什么可以存儲(chǔ)在該保留內(nèi)存區(qū)域。
C++ 給程序員提供了一系列豐富的內(nèi)置類型以及用戶定義的數(shù)據(jù)類型。下表列出了七個(gè)基本的 C++ 數(shù)據(jù)類型:
類型 | 關(guān)鍵字 |
---|---|
Boolean | bool |
Character | char |
Integer | int |
Floating point | float |
Double floating point | double |
Valueless | void |
Wide character | wchar_t |
上面的幾個(gè)基本類型可以使用一個(gè)或多個(gè)如下的修飾符這來(lái)修飾:
下面的表顯示了變量類型,該類型的值在內(nèi)存中需要多少內(nèi)存空間來(lái)存儲(chǔ),該類型能夠表示的最大值和最小值。
類型 | 長(zhǎng)度 | 范圍 |
---|---|---|
char | 1byte | -127 - 127 或者 0 - 255 |
unsigned char | 1byte | 0 - 255 |
signed char | 1byte | -127 - 127 |
int | 4bytes | -2147483648 - 2147483647 |
unsigned int | 4bytes | 0 - 4294967295 |
signed int | 4bytes | -2147483648 - 2147483647 |
short int | 2bytes | -32768 - 32767 |
unsigned short int | Range | 0 - 65,535 |
signed short int | Range | -32768 - 32767 |
long int | 4bytes | -2,147,483,647 - 2,147,483,647 |
signed long int | 4bytes | 和 long int 一樣 |
unsigned long int | 4bytes | 0 - 4,294,967,295 |
float | 4bytes | +/- 3.4e +/- 38 (~7 位數(shù)字) |
double | 8bytes | +/- 1.7e +/- 308 (~15 位數(shù)字) |
long double | 8bytes | +/- 1.7e +/- 308 (~15 位數(shù)字) |
wchar_t | 2 或者 4 bytes | 1 個(gè)寬字符 |
變量類型占用空間的實(shí)際大小可能和上表展示的有些不同,這取決于您所使用的編譯器和電腦操作系統(tǒng)。
下面示例將輸出各種數(shù)據(jù)類型在您的計(jì)算機(jī)上實(shí)際占用的內(nèi)存空間大小。
#include <iostream>
using namespace std;
int main()
{
cout << "Size of char : " << sizeof(char) << endl;
cout << "Size of int : " << sizeof(int) << endl;
cout << "Size of short int : " << sizeof(short int) << endl;
cout << "Size of long int : " << sizeof(long int) << endl;
cout << "Size of float : " << sizeof(float) << endl;
cout << "Size of double : " << sizeof(double) << endl;
cout << "Size of wchar_t : " << sizeof(wchar_t) << endl;
return 0;
}
這個(gè)示例使用 endl,這個(gè)表示在每一行之后插入一個(gè)換行符,<< 操作符被用來(lái)將多個(gè)值輸出到屏幕上。我們也使用 sizeof() 函數(shù)來(lái)獲得各種數(shù)據(jù)類型的存儲(chǔ)大小。
上面的代碼編譯和執(zhí)行時(shí),它會(huì)產(chǎn)生以下結(jié)果,這個(gè)可能會(huì)隨著機(jī)器的不同而顯示不同的結(jié)果:
Size of char : 1
Size of int : 4
Size of short int : 2
Size of long int : 4
Size of float : 4
Size of double : 8
Size of wchar_t : 4
你可以使用 typedef 為已經(jīng)存在的數(shù)據(jù)類型起一個(gè)新的名稱。下面是一個(gè)使用 typedef 定義一個(gè)新類型的簡(jiǎn)單語(yǔ)法方式:
typedef type newname;
例如,下面告訴編譯器,feet 是 int 的另一個(gè)名字:
typedef int feet;
現(xiàn)在,下面的聲明是完全合法和創(chuàng)建一個(gè)整數(shù)變量稱為 distance:
feet distance;
枚舉類型聲明了一個(gè)可選的類型名和一組值為零的或多個(gè)標(biāo)識(shí)符的類型。每個(gè)枚舉器是一個(gè)常數(shù),它的類型是枚舉。
創(chuàng)建一個(gè)枚舉類型需要使用關(guān)鍵字 enum。枚舉類型的一般形式是:
enum enum-name { list of names} var-list;
在這里,enum-name 是枚舉類型名。list of name 是由逗號(hào)分隔開(kāi)的。
例如,下面的代碼定義了一個(gè)稱為 color 的顏色枚舉類型,并且變量 c 的是一個(gè) color 類型的枚舉變量。最后, c 被賦值為 “blue”。
enum color { red,green,blue} c;
c = blue;
默認(rèn)情況下,枚舉類型花括號(hào)中第一個(gè)變量被賦值為 0,第二個(gè)變量賦值為 1,第三個(gè)賦值為 2,依此類推。但是你也可以給某個(gè)指定變量一個(gè)初始值。例如,在下面的枚舉類型, green 將會(huì)被初始化為 5。
enum color { red, green=5, blue };
這里,blue 的值將會(huì)變成 6,因?yàn)槊總€(gè)變量都會(huì)比它前一個(gè)變量大 1。