1.變數名 命名規則: 在名稱中只能使用字母字元、數字和下劃線; 名稱的第一個字元不能是數字; 不能將C++關鍵詞用作名稱。 常用的首碼:n-整數,str/sz-字元串,b-布爾值,p-指針,c-單個字元,m-類成員值 2.整形 short 至少16位; int至少與short一樣長; long至少 ...
1.變數名
命名規則:
- 在名稱中只能使用字母字元、數字和下劃線;
- 名稱的第一個字元不能是數字;
- 不能將C++關鍵詞用作名稱。
常用的首碼:n-整數,str/sz-字元串,b-布爾值,p-指針,c-單個字元,m-類成員值
2.整形
- short 至少16位;
- int至少與short一樣長;
- long至少32位,且至少與int一樣長;
- long long至少64位,且至少與long一樣長。
3.無符號類型
當數值不會為負時,使用無符號類型,如人口等。要創建無符號版本的基本整型,只需要使用關鍵字unsigned來修改聲明即可。如果short的表示範圍為-32768到+32767,那麼無符號版本的表示範圍為0-65535,可見其優點是可以增大變數能夠存儲的最大值。
類型如何選擇:
- 若變數表示的值不可能為負,則可以使用無符號類型,這樣變數可以表示更大的值;
- 若知道變數可能表示的整數值大於16位整數的最大可能值,則使用long。即使系統上int為32位,也要這樣做。如果要存儲的值超過20億,可使用long long。
- 若short比int小,則使用short可以節省記憶體。通常,僅當有大型整型數組時,才有必要使用short。如果節省記憶體很重要,則應使用short而不是使用int。例如,若將程式從int為16位的系統移到int為32位的系統,則用於存儲int數組的記憶體量將加倍,但short數組不受影響。
與int不同的是,char在預設情況下既不是沒有符號,也不是有符號。如果char有某種特定的行為非常重要,則可以顯式地將類型設置為signed char或unsigned char
4.const
一種常見的做法是將變數名稱的首字母大寫,以提醒這個變數是常量。或將整個變數名稱大寫,使用#define創建常量時通常使用這種約定 。
下表列出了七種基本的 C++ 數據類型:
布爾型 | bool |
字元型 | char |
整型 | int |
浮點型 | float |
雙浮點型 | double |
無類型 | void |
寬字元型 | wchar_t |
一些基本類型可以使用一個或多個類型修飾符進行修飾:
- signed
- unsigned
- short
- long
下表顯示了各種變數類型在記憶體中存儲值時需要占用的記憶體,以及該類型的變數所能存儲的最大值和最小值。
註意:不同系統會有所差異。
類型 | 位 | 範圍 |
---|---|---|
char | 1 個位元組 | -128 到 127 或者 0 到 255 |
unsigned char | 1 個位元組 | 0 到 255 |
signed char | 1 個位元組 | -128 到 127 |
int | 4 個位元組 | -2147483648 到 2147483647 |
unsigned int | 4 個位元組 | 0 到 4294967295 |
signed int | 4 個位元組 | -2147483648 到 2147483647 |
short int | 2 個位元組 | -32768 到 32767 |
unsigned short int | 2 個位元組 | 0 到 65,535 |
signed short int | 2 個位元組 | -32768 到 32767 |
long int | 8 個位元組 | -9,223,372,036,854,775,808 到 9,223,372,036,854,775,807 |
signed long int | 8 個位元組 | -9,223,372,036,854,775,808 到 9,223,372,036,854,775,807 |
unsigned long int | 8 個位元組 | 0 to 18,446,744,073,709,551,615 |
float | 4 個位元組 | +/- 3.4e +/- 38 (~7 個數字) |
double | 8 個位元組 | +/- 1.7e +/- 308 (~15 個數字) |
long double | 16 個位元組 | +/- 1.7e +/- 308 (~15 個數字) |
wchar_t | 2 或 4 個位元組 | 1 個寬字元 |
5.類型轉換
c++自動執行很多類型轉換
- 將一種算術類型的值賦給另一種算術類型的變數時,c++將對值進行轉換;
- 表達式中包含不同的類型時,c++將對值進行轉換;
- 將參數傳遞給函數時,c++將對值進行轉換。
c++11新增了一個工具,讓編譯器能夠根據初始值的類型推斷變數的類型。即auto
如 auto n = 100; //n是int型
auto x = 1.5; //x是double型
在處理複雜類型,比如標準模塊庫(STL)中的類型時,自動類型推斷的優勢才能顯現出來,如:在c++98中的代碼
std::vector<double> scores;
std::vector<double>::iterator pv = scores.begin();
c++11允許將其寫為:
std::vector<double> scores;
auto pv = scores.begin();
參考:《c++ primer plus》