C++入門教程(19):數據類型

小古銀的官方網站(完整教程):http://www.xiaoguyin.com/
C++入門教程視頻:https://www.bilibili.com/vide...ide


前言

通過前面的學習和練習,相信你已經更加了解計算機和C++的關係。本部分教程將詳細講解基本數據類型、一些經常使用的數據類型的使用和再詳細講解循環語句等基礎內容。學習

本部分教程的目的:優化

  • 詳細講解以前用過的基礎知識,讓你在使用過程當中儘可能避免遇到BUG和儘量優化代碼。
  • 講解其餘很是經常使用的數據類型。

在學習以前,再解釋幾個名詞:網站

類是能夠自定義的數據類型的統稱,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::stringstd::wstringstd::u16stringstd::u32string用於保存字符串,這些類型在string庫中。
  • std::size_t用於保存長度,這個類型在cstddef庫中。

類型後綴

0默認是int類型。可是有很多的時候,若是咱們想這個0unsigned 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庫中:

  • 固定8位長度:int8_tuint8_t
  • 固定16位長度:int16_tuint16_t
  • 固定32位長度:int32_tuint32_t
  • 固定64位長度:int64_tuint64_t

注意:只有當編譯器支持這些類型的時候,這些類型纔會被定義;當你使用了這些類型可是編譯器不支持,編譯的時候將會報錯。

補充知識(瞭解便可)

  1. 基本數據類型中,char16_tchar32_tunsigned long longlong long是C++11增長的。
  2. 後綴ull/ULL是C++11增長的。
相關文章
相關標籤/搜索