小古銀的官方網站(完整教程):http://www.xiaoguyin.com/
C++入門教程視頻:https://www.bilibili.com/vide...ide
通過前面的學習和練習,相信你已經更加了解計算機和C++的關係。本部分教程將詳細講解基本數據類型、一些經常使用的數據類型的使用和再詳細講解循環語句等基礎內容。學習
本部分教程的目的:優化
在學習以前,再解釋幾個名詞:網站
類是能夠自定義的數據類型的統稱,C++標準庫中有不少類,而咱們也能夠經過類來制定出方便本身使用的數據類型。後續教程中若是出現類的話,我將會明確指出它是類。ui
至於如何制定出一個類,這個將在後續教程中講解。指針
用類聲明定義出來的變量叫作對象。code
用類聲明定義出對象的這個行爲也叫作實例化,也能夠叫作建立對象,不過本教程多數也是用聲明這個詞。視頻
像int
等,在C++語言中有特定做用的單詞。關鍵字是不能用做變量名稱等的標識符。對象
編譯的時候。教程
程序運行的時候。一些能夠在編譯的時候得出結果的代碼,編譯器通常都會盡可能在編譯的時候優化掉,這樣編譯出來的程序因爲執行的代碼更少,因此運行的時候會更快。
咱們知道在使用變量前須要用數據類型聲明出變量才能使用,前面已經講解過很是經常使用的基本數據類型,如今將詳細講解基本數據類型和經常使用的其餘數據類型。
在聲明定義變量時,必須指定數據類型,來講明變量保存的類型和變量佔用多大的內存。
基本數據類型屬於C++的核心語言,其餘的數據類型都是根據這些衍生出來的。如下是基本數據類型(佔用內存和取值範圍是基於VS2017和GCC7.3的,感謝FirstLove指出問題):
類型 | 類型簡寫 | 用途 | 佔用內存(字節數) | 取值範圍 |
---|---|---|---|---|
bool | bool | 只有兩個值(例如性別) | 1 | false, true |
unsigned char | unsigned char | 保存字節數據 | 1 | [0, 255] |
signed char | char | 保存窄字符或UTF-8字符 | 1 | [-128, 127] |
wchar_t | wchar_t | 保存寬字符字符 | 2(Windows)或 4(Linux/OS X) | [-32768, 32767](Windows)或[-2147483648, 2147483647](Linux/OS X) |
char16_t | char16_t | 保存UCS-2字符 | 2 | [0, 65535] |
char32_t | char32_t | 保存UCS-4字符 | 4 | [0, 4294967295] |
signed int | int | 保存整數 | 2(16位系統)或 4(32位系統) | [-32768, 32767](16位系統)或[-2147483648, 2147483647](32位系統) |
unsigned int | unsigned int | 保存非負整數 | 2(16位系統)或 4(32位系統) | [0, 65535](16位系統)或[0, 4294967295](32位系統) |
signed short int | short | 保存整數 | 2 | [-32768, 32767] |
unsigned short int | unsigned short | 保存非負整數 | 2 | [0, 65535] |
signed long int | long | 保存整數 | 4(GCC32位/VS)或 8(GCC64位) | [-2147483648, 2147483647](GCC32位/VS)或 [-9223372036854775808, 9223372036854775807](GCC64位) |
unsigned long int | unsigned long | 保存非負整數 | 4(GCC32位/VS)或 8(GCC64位) | [0, 4294967295](GCC32位/VS)或 [0, 18446744073709551615](GCC64位) |
signed long long int | long long | 保存整數 | 8 | [-9223372036854775808, 9223372036854775807] |
unsigned long long int | unsigned long long | 保存非負整數 | 8 | [0, 18446744073709551615] |
float | float | 保存小數 | 4 | 6位左右的有效數字 |
double | double | 保存小數 | 8 | 16位左右的有效數字 |
long double | long double | 保存小數 | 8(VS)或 12(GCC32位)或 16(GCC64位) | 這個狀況太多就不考證了,轉載請註明出處「小古銀的C++教程」 |
指針 | 指針 | 保存內存地址 | 2(16位系統)或 4(32位系統)或 8(64位系統) | [0x0000, 0xFFFF](16位系統)或 [0x00000000, 0xFFFFFFFF](32位系統)或 [0x0000000000000000, 0xFFFFFFFFFFFFFFFF](64位系統) |
其中,指針是用來保存地址的特殊數據類型。雖然指針不是基本數據類型,但也是很經常使用的類型,因此也放到這部分一塊兒講解。
unsigned long long
更大的基本數據類型,因此若是你要保存的數字大於unsigned long long
能夠保存的最大值,你須要另外想辦法解決。其餘經常使用的數據類型:
std::string
、std::wstring
、std::u16string
、std::u32string
用於保存字符串,這些類型在string
庫中。std::size_t
用於保存長度,這個類型在cstddef
庫中。0
默認是int
類型。可是有很多的時候,若是咱們想這個0
是unsigned int
類型。那麼,這種狀況就可使用類型後綴,說明這個字面量是指定類型的。例如:unsigned int zero = 0u;
、unsigned long long two = 2ull;
。
類型後綴有如下這些:
類型 | 後綴 |
---|---|
bool | 無後綴 |
unsigned char | 無後綴 |
char/wchar_t/char16_t/char32_t | 無後綴 |
int | 無後綴 |
short | 無後綴 |
long | l 或 L |
unsigned int | u 或 U |
unsigned short | 無後綴 |
unsigned long | ul 或 UL |
long long | ll 或 LL |
unsigned long long | ull 或 ULL |
float | f 或 F |
double | 無後綴 |
long double | l 或 L |
若是須要固定數據佔用大小,則須要使用如下數據類型,這些數據類型都在cstdint
庫中:
int8_t
和uint8_t
。int16_t
和uint16_t
。int32_t
和uint32_t
。int64_t
和uint64_t
。注意:只有當編譯器支持這些類型的時候,這些類型纔會被定義;當你使用了這些類型可是編譯器不支持,編譯的時候將會報錯。
char16_t
、char32_t
、unsigned long long
、long long
是C++11增長的。ull
/ULL
是C++11增長的。