C++) (內建類型

內建類型 (也稱為 基本類型 ,) 是由 C++ 語言標準所指定,而且會內建于編譯器中。 任何標頭檔都不會定義內建類型。 內建類型分成三個主要類別: 整數浮點void。 整數類型代表整數。 浮點類型可以指定可能有小數部分的值。 編譯器會將大部分的內建類型視為相異類型。 不過,某些類型是 同義字,或由編譯器視為對等類型。

Void 類型

void 類型描述一組空的值。 無法指定 型 void 別的變數。 此 void 類型主要用於宣告不傳回任何值的函式,或宣告不具型別或任意型別資料的泛型指標。 所有運算式都可以明確轉換或轉型為類型 void。 不過,這類運算式僅限於下列用法:

std::nullptr_t

關鍵字 nullptr 是 類型的 std::nullptr_t Null 指標常數,可轉換成任何原始指標類型。 如需詳細資訊,請參閱nullptr

布林值型別

bool 別可以有值 truefalse 。 類型的大小是實作 bool 特定的。 如需 Microsoft 特定實作詳細資料 ,請參閱內建類型的大小

字元類型

char 類型是字元表示類型,可有效率地編碼基本執行字元集的成員。 C++ 編譯器會將類型為 char, signed charunsigned char 的變數視為具有不同的類型。

Microsoft 特定:除非使用編譯選項, /J 否則類型的 char 變數會依預設升階為 int from 類型 signed char 。 在此情況下,它們會被視為類型 unsigned char ,並升級為 int 沒有符號延伸模組。

類型的 wchar_t 變數是寬字元或多位元組字元類型。 L使用字元或字串常值之前的前置詞來指定寬字元類型。

Microsoft 特定:根據預設, wchar_t 是原生類型,但您可以使用 /Zc:wchar_t- 來建立 wchar_tunsigned 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 特定:和 doublelong double 標記法相同。 不過, long double 編譯器會將 和 double 視為相異型別。 Microsoft C++ 編譯器使用 4 和 8 位元組 IEEE-754 浮點標記法。 如需詳細資訊,請參閱 IEEE 浮點表示法。

整數類型

int 類型是預設的基本整數類型。 它可以代表實作特定範圍的所有整數。

帶正負號的整數標記法是可以同時保存正值和負值的整數標記法。 預設會使用 ,或修飾詞關鍵字存在時 signedunsigned修飾詞關鍵字會指定一個不帶正負號的標記法,只能保存非負值。

大小修飾詞會以所使用的整數標記法位指定寬度。 語言支援 shortlonglong 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 unsignedunsigned 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 類型。 這些類型可以使用 signedunsigned 修飾詞。 __int8資料類型與類型同義, __int16 與類型 char 同義, __int32 與類型 short 同義,且與 類型 int 同義,且 __int64 與 類型 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 個位元組

如需每個類型值範圍的摘要,請參閱 資料類型範圍

如需類型轉換的詳細資訊,請參閱 標準轉換

另請參閱

資料類型範圍