內建類型 (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 從類型 signed char 升階為 。 在此情況下,它們會被視為類型 unsigned char ,而且會升級為 int 不含符號擴充功能。

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

Microsoft 特定 :根據預設, wchar_t 是原生類型,但您可以使用 /Zc:wchar_t- 來為 建立 wchar_t typedef unsigned short__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 Type 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 與類型同義,與類型 shortchar__int32 同義,與類型同義,且 __int64 與類型 intlong 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 個位元組

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

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

另請參閱

資料類型範圍