內建類型(也稱為 基本型別)是由C++語言標準所指定,並內建於編譯程式中。 內建類型未定義於任何頭檔中。 內建類型分為三個主要類別: 整數、 浮點和 void。 整數類型代表整數。 浮點類型可以指定可能有小數部分的值。 編譯程式會將大部分的內建類型視為不同的類型。 不過,某些類型是 同義字,或編譯程式視為對等型別。
Void 類型
此 void
類型描述一組空的值。 無法指定類型 void
變數。 此 void
類型主要用於宣告不傳回任何值的函式,或宣告不具型別或任意類型數據的泛型指標。 所有運算式都可以明確轉換或轉型為類型 void
。 不過,這類運算式僅限於下列用法:
運算陳述式 (如需詳細資訊,請參閱 運算式。)
逗號運算子的左運算元 (如需詳細資訊,請參閱 逗號運算子。)
條件運算子 (
? :
) 的第二個或第三個運算元 (如需詳細資訊,請參閱 具有條件運算子的表達式。
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
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特定:和 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
與類型同義,與類型short
char
__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 、、int __int32 、unsigned int 、、、 long unsigned long |
4 個位元組 |
double 、、 __int64 、 long double 、 long long 、 unsigned long long |
8 個位元組 |
如需每種類型值範圍的摘要,請參閱 數據類型範圍 。
如需類型轉換的詳細資訊,請參閱 標準轉換。