由于考研的編程題很多都需要使用C++語言來寫,所以雖然我不太喜歡C++這門語言,那么還是得來看看。
算術類型
需要提前說明,C++語言屬于比較低級的語言,所以沒有規定數據類型的具體大小,所有數據類型都可能由于機器不同而產生差異。標準只規定了這些數據類型的最小范圍,這一點我們在使用C++的時候也要注意。
整型
整型數據類型和它們的大小總結在下表:
數據類型 | 含義 | 最小單位 |
---|---|---|
bool | 布爾類型 | 未定義 |
char | 字符類型 | 1字節 |
wchar_t | 寬字符類型 | 2字節 |
char16_t | Unicode字符類型 | 2字節 |
char32_t | Unicode字符類型 | 4字節 |
short | 短整型 | 2字節 |
int | 整型 | 2字節 |
long | 長整型 | 4字節 |
long long | 長整型 | 8字節 |
wchar_t、char16_t和char32_t 是擴展字符類型,第一個用于寬字符,后兩者用于Unicode字符集。
浮點型
浮點型數據類型和它們的大小總結在下表:
數據類型 | 含義 | 最小單位 |
---|---|---|
float | 單精度浮點類型 | 6位有效數字 |
double | 雙精度類型 | 10位有效數字 |
long double | 擴展精度類型 | 10位有效數字 |
帶符號的類型
在前面介紹的整型類型中,除了布爾類型和擴展的字符類型之外,其他整型都可以是有符號的(signed)和無符號的(unsigned),它們的區別在于取值范圍。假如一個有符號變量的取值范圍是-128到127,那么相應的無符號數取值范圍就是0到255。默認情況下,類型是有符號類型,如果需要無符號類型需要顯式指定。
在進行運算的時候,有符號數會被轉換為無符號數進行運算,在這個過程中運算結果可能意外改變。所以為了穩妥起見,不要將有符號數和無符號數混合進行計算。
字面量
直接寫在程序中的值稱為字面量。由于數據類型有不同類型,所以字面量相應的也有不同的類型。
整型字面量
整型字面值可以有十進制、八進制和十六進制的形式。默認的數字就是十進制的,例如100;如果數字以0開頭,那么就是八進制的數,例如024;如果數字以0x或0X開頭,那么就是16進制的,例如0xcafe。
后綴 | 含義 | 例子 |
---|---|---|
u或U | 無符號數 | 1000U |
l或L | long類型 | 1000L,由于小寫可能引起混淆,所以最好使用大寫L |
ll或LL | long long類型 | 1000LL,最好采用大寫形式 |
浮點型字面值
浮點數字面值可以有小數和科學計數法兩種形式 ,以下都是有效的浮點型字面值。
3.14 0.4 .4 1e10 0.
浮點型字面值的后綴情況見下表。
后綴 | 含義 | 例子 |
---|---|---|
f或F | 單精度浮點數 | 0.4F |
l或L | long double類型 | 10.00L,最好使用大寫L |
無后綴 | 雙精度浮點數 | 3.14 |
字符和字符串字面值
由單引號包括的單個字符是字符字面量,例如'c'
。
由雙引號包括的一串字符是字符串字面量,例如"abc"
,需要注意在C++中,字符串字面量會由編譯器隱式添加一個\0
字符,以兼容C語言。所以"abc"
這個字符串的長度其實是4。這一點需要注意。
如果兩個字符串字面量僅由空格分隔,那么這兩個字符串實際上是相連的。
char long_string[] = "This is a long line "
"and next line";
字符和字符串字面量也有一些前綴,總結如下。
前綴 | 含義 | 例子 |
---|---|---|
u | char16_t類型 | u'c' |
U | char32_t類型 | U'c' |
L | 寬字符 | L'c' |
u8 | UTF-8字符串,僅能用于字符串字面量 | 3.14 |
布爾值字面量
布爾值字面量只有true
和false
兩個。