(C++) 的內建類型
內建類型 (也稱為 基本類型) 是由 C++ 語言標準所指定,並內建于編譯器中。 內建類型未定義于任何標頭檔中。 內建類型分為三個主要類別: 整數、 浮點和 void。 整數類型代表整數。 浮點類型可以指定可能有小數部分的值。 編譯器會將大部分的內建類型視為相異類型。 不過,某些類型是 同義字,或由編譯器視為對等類型。
Void 類型
此 void
類型描述一組空的值。 無法指定類型的 void
變數。 此 void
類型主要用於宣告未傳回任何值的函式,或宣告不具型別或任意型別資料的泛型指標。 所有運算式都可以明確轉換或轉型為類型 void
。 不過,這類運算式僅限於下列用法:
運算陳述式 (如需詳細資訊,請參閱 Expressions.)
逗號運算子的左運算元 (如需詳細資訊,請參閱 逗號運算子.)
條件運算子 (
? :
) 的第二個或第三個運算元 (如需詳細資訊,請參閱 條件運算子的運算式.)
std::nullptr_t
關鍵字 nullptr
是 類型的 std::nullptr_t
Null 指標常數,可轉換成任何原始指標類型。 如需詳細資訊,請參閱nullptr
。
布林值型別
此 bool
類型可以有值 true
和 false
。 類型的大小是實作 bool
特定的。 如需 Microsoft 特定實 作詳細資料,請參閱內建類型的大小 。
字元類型
此 char
類型是字元表示類型,可有效率地編碼基本執行字元集的成員。 C++ 編譯器會將類型為 char
, signed char
和 unsigned char
的變數視為具有不同的類型。
Microsoft 特定:除非使用編譯選項, /J
否則類型的 char
變數預設會升階為 int
,就像從類型 signed char
一樣。 在此情況下,它們會被視為類型 unsigned char
,並升級為 int
不含符號延伸模組。
類型的 wchar_t
變數是寬字元或多位元組字元類型。 使用 L
字元或字串常值之前的前置詞來指定寬字元類型。
Microsoft 特定:根據預設, wchar_t
是原生類型,但您可以使用 /Zc:wchar_t-
來建立 wchar_t
的 unsigned short
typedef。 __wchar_t
是 Microsoft 特定的類型,與原生 wchar_t
類型同義。
此 char8_t
類型用於 UTF-8 字元表示。 其標記法與 unsigned char
相同,但會由編譯器視為不同的類型。 此 char8_t
類型為 C++20 的新功能。 Microsoft 特定:使用 char8_t
需要 /std:c++20
編譯器選項或更新版本 (,例如 /std:c++latest
) 。
此 char16_t
類型用於 UTF-16 字元表示。 它必須夠大,才能代表任何 UTF-16 程式碼單位。 它會由編譯器視為不同的類型。
此 char32_t
類型用於 UTF-32 字元表示。 它必須夠大,才能代表任何 UTF-32 程式碼單位。 它會由編譯器視為不同的類型。
浮點類型
浮點類型會使用 IEEE-754 標記法,在各種範圍提供小數值的近似值。 下表列出 C++ 中的浮點類型,以及浮點類型大小的比較限制。 這些限制是由 C++ 標準所要求,而且與 Microsoft 實作無關。 標準中未指定內建浮點類型的絕對大小。
類型 | 目錄 |
---|---|
float |
類型 float 是 C++ 中的最小浮點類型。 |
double |
double 類型是大於或等於 float 類型,但短於或等於 long double 類型大小的浮點類型。 |
long double |
long double 類型是大於或等於 double 類型的浮點類型。 |
Microsoft 特定:和 double
的 long double
標記法相同。 不過, long double
編譯器會將 和 double
視為相異類型。 Microsoft C++ 編譯器使用 4 和 8 位元組 IEEE-754 浮點標記法。 如需詳細資訊,請參閱 IEEE 浮點表示法。
整數類型
此 int
類型是預設的基本整數類型。 它可以代表實作特定範圍的所有整數。
帶正負號的整數標記法是可以同時保存正值和負值。 預設會使用,或修飾詞關鍵字存在時 signed
。 unsigned
修飾詞關鍵字會指定只能保存非負值的非帶正負號標記法。
大小修飾詞會指定所使用整數標記法的位寬度。 語言支援 short
、 long
和 long long
修飾詞。 類型 short
必須至少為 16 位寬。 類型 long
必須至少為 32 位寬。 類型 long long
必須至少為 64 位寬。 標準會指定整數類型之間的大小關聯性:
1 == sizeof(char) <= sizeof(short) <= sizeof(int) <= sizeof(long) <= sizeof(long long)
實作必須同時維護每個類型的最小大小需求和大小關聯性。 不過,實際大小在實作之間可能會有所不同。 如需 Microsoft 特定實 作詳細資料,請參閱內建類型的大小 。
int
指定 、 unsigned
或 大小修飾詞時 signed
,可能會省略 關鍵字。 如果存在,修飾詞和 int
類型可能會依任何順序顯示。 例如, short unsigned
和 unsigned int short
參考相同的類型。
整數類型同義字
編譯器會將下列類型的群組視為同義字:
short
,short int
,signed short
,signed short int
unsigned short
,unsigned short int
int
,signed
,signed int
unsigned
,unsigned int
long
,long int
,signed long
,signed long int
unsigned long
,unsigned long int
long long
,long long int
,signed long long
,signed long long int
unsigned long long
,unsigned long long int
Microsoft 特定的 整數類型包括特定寬度 __int8
、 __int16
、 __int32
和 __int64
類型。 這些類型可以使用 signed
和 unsigned
修飾詞。 __int8
資料類型與類型同義, __int16
與類型 char
short
同義, __int32
與類型同義,且 __int64
與類型 int
long long
同義。
內建類型的大小
大部分的內建類型都有實作定義的大小。 下表列出 Microsoft C++ 中內建類型所需的儲存體數量。 特別是, long
即使在 64 位作業系統上也是 4 個位元組。
類型 | 大小 |
---|---|
bool , char , char8_t , unsigned char , signed char , __int8 |
1 個位元組 |
char16_t , __int16 , short , unsigned short , wchar_t , __wchar_t |
2 個位元組 |
char32_t , float , __int32 , int , unsigned int , long , unsigned long |
4 個位元組 |
double , __int64 , long double , long long , unsigned long long |
8 個位元組 |
如需每個類型值範圍的摘要,請參閱 資料類型範圍 。
如需類型轉換的詳細資訊,請參閱 標準轉換。