C++基本數(shù)據(jù)類型

2023-09-20 09:23 更新

談及計算機中的數(shù)據(jù),我們會想到文本、圖片、視頻、語音、3D 模型等各種形式。盡管這些數(shù)據(jù)的組織形式各異,但它們都由各種基本數(shù)據(jù)類型構(gòu)成。

基本數(shù)據(jù)類型是 CPU 可以直接進行運算的類型,在算法中直接被使用,主要包括以下幾種類型。

  • 整數(shù)類型 byte、short、int、long 。
  • 浮點數(shù)類型 float、double ,用于表示小數(shù)。
  • 字符類型 char ,用于表示各種語言的字母、標點符號、甚至表情符號等。
  • 布爾類型 bool ,用于表示“是”與“否”判斷。

基本數(shù)據(jù)類型以二進制的形式存儲在計算機中。一個二進制位即為 1 比特。在絕大多數(shù)現(xiàn)代系統(tǒng)中,1 字節(jié)(byte)由 8 比特(bits)組成。

基本數(shù)據(jù)類型的取值范圍取決于其占用的空間大小。下面以 Java 為例。

  • 整數(shù)類型 byte 占用 1 byte = 8 bits ,可以表示 2^8 個數(shù)字。
  • 整數(shù)類型 int 占用 4 bytes = 32 bits ,可以表示 2^32 個數(shù)字。

表 3-1 列舉了各種基本數(shù)據(jù)類型的占用空間、取值范圍和默認值。此表格無須硬背,大致理解即可,需要時可以通過查表來回憶。

表 3-1   基本數(shù)據(jù)類型的占用空間和取值范圍

類型符號占用空間最小值最大值默認值
整數(shù)byte1 byte?27 (?128)27?1 (127)0
short2 bytes?215215?10
int4 bytes?231231?10
long8 bytes?263263?10
浮點數(shù)float4 bytes1.175×10?383.403×10380.0f
double8 bytes2.225×10?3081.798×103080.0
字符char2 bytes / 1 byte0216?10
布爾bool1 bytefalsetruefalse

對于表 3-1 ,需要注意以下幾點。

  • C 和 C++ 未明確規(guī)定基本數(shù)據(jù)類型大小,而因?qū)崿F(xiàn)和平臺各異。表 3-1 遵循 LP64 數(shù)據(jù)模型,其用于包括 Linux 和 macOS 在內(nèi)的 Unix 64 位操作系統(tǒng)。
  • 字符 char 的大小在 C 和 C++ 中為 1 字節(jié),在大多數(shù)編程語言中取決于特定的字符編碼方法,詳見“字符編碼”章節(jié)。
  • 即使表示布爾量僅需 1 位(0 或 1),它在內(nèi)存中通常被存儲為 1 字節(jié)。這是因為現(xiàn)代計算機 CPU 通常將 1 字節(jié)作為最小尋址內(nèi)存單元。

那么,基本數(shù)據(jù)類型與數(shù)據(jù)結(jié)構(gòu)之間有什么聯(lián)系呢?我們知道,數(shù)據(jù)結(jié)構(gòu)是在計算機中組織與存儲數(shù)據(jù)的方式。它的主語是“結(jié)構(gòu)”而非“數(shù)據(jù)”。

如果想要表示“一排數(shù)字”,我們自然會想到使用數(shù)組。這是因為數(shù)組的線性結(jié)構(gòu)可以表示數(shù)字的相鄰關(guān)系和順序關(guān)系,但至于存儲的內(nèi)容是整數(shù) int、小數(shù) float 或是字符 char ,則與“數(shù)據(jù)結(jié)構(gòu)”無關(guān)。

換句話說,基本數(shù)據(jù)類型提供了數(shù)據(jù)的“內(nèi)容類型”,而數(shù)據(jù)結(jié)構(gòu)提供了數(shù)據(jù)的“組織方式”。例如以下代碼,我們用相同的數(shù)據(jù)結(jié)構(gòu)(數(shù)組)來存儲與表示不同的基本數(shù)據(jù)類型,包括 int、float、char、bool 等。

// 使用多種基本數(shù)據(jù)類型來初始化數(shù)組
int numbers[5]; float decimals[5]; char characters[5]; bool bools[5];


以上內(nèi)容是否對您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號
微信公眾號

編程獅公眾號