C++ 基本數據類型的大小與範圍在不同編譯器/平台可能不同。本文依據 Visual C++ 32 位與 64 位編譯器整理完整類型表,包含標準類型、Microsoft 擴展類型、布爾、字符、浮點、寬字符等,註明字節數、別名、有符號/無符號範圍。
| 類型名稱 | 字節 | 其他名稱 | 值的範圍 |
|---|---|---|---|
int | 4 | signed | -2,147,483,648 ~ 2,147,483,647 |
unsigned int | 4 | unsigned | 0 ~ 4,294,967,295 |
__int8 | 1 | char | -128 ~ 127 |
unsigned __int8 | 1 | unsigned char | 0 ~ 255 |
__int16 | 2 | short, short int, signed short int | -32,768 ~ 32,767 |
unsigned __int16 | 2 | unsigned short, unsigned short int | 0 ~ 65,535 |
__int32 | 4 | signed, signed int, int | -2,147,483,648 ~ 2,147,483,647 |
unsigned __int32 | 4 | unsigned, unsigned int | 0 ~ 4,294,967,295 |
__int64 | 8 | long long, signed long long | -9,223,372,036,854,775,808 ~ 9,223,372,036,854,775,807 |
unsigned __int64 | 8 | unsigned long long | 0 ~ 18,446,744,073,709,551,615 |
bool | 1 | — | false 或 true |
char | 1 | — | -128 ~ 127 (默認)/J 編譯選項下 0 ~ 255 |
signed char | 1 | — | -128 ~ 127 |
unsigned char | 1 | — | 0 ~ 255 |
short | 2 | short int, signed short int | -32,768 ~ 32,767 |
unsigned short | 2 | unsigned short int | 0 ~ 65,535 |
long | 4 | long int, signed long int | -2,147,483,648 ~ 2,147,483,647 |
unsigned long | 4 | — | 0 ~ 4,294,967,295 |
long long | 8 | — (等效 __int64) | -9,223,372,036,854,775,808 ~ 9,223,372,036,854,775,807 |
unsigned long long | 8 | — (等效無符號 __int64) | 0 ~ 18,446,744,073,709,551,615 |
enum:大小視實現而定,包含用戶定義的命名整型常數集合。
| 類型 | 字節 | 範圍 / 精度 |
|---|---|---|
float | 4 | 3.4E ± 38 (7 位有效數字) |
double | 8 | 1.7E ± 308 (15 位有效數字) |
long double | 同 double | 與 double 相同 |
| 類型 | 字節 | 別名 | 範圍 / 說明 |
|---|---|---|---|
wchar_t | 2 | __wchar_t | 0 ~ 65,535。視用法為寬字符或多字節字符。字面量前綴 L (如 L'中', L"字符串") |
__ 開頭(如 __int8、__wchar_t)為 Microsoft 擴展,非 C++ 標準。signed/unsigned 可用於除 bool 外所有整型。char、signed char、unsigned char 是三個不同類型(重載決議、模板推導視為不同)。sizeof(int)。<climits>/<cfloat>)// 整型限制 INT_MIN, INT_MAX, UINT_MAX LONG_MIN, LONG_MAX, ULONG_MAX LLONG_MIN, LLONG_MAX, ULLONG_MAX (C++11) CHAR_BIT, CHAR_MIN, CHAR_MAX, SCHAR_MIN, SCHAR_MAX, UCHAR_MAX SHRT_MIN, SHRT_MAX, USHRT_MAX // 浮點限制 FLT_MIN, FLT_MAX, FLT_DIG (有效數字) DBL_MIN, DBL_MAX, DBL_DIG LDBL_MIN, LDBL_MAX, LDBL_DIG
<cstdint>)跨平台推薦使用:
int8_t, uint8_t (精確 8 位)int16_t, uint16_tint32_t, uint32_tint64_t, uint64_tintptr_t, uintptr_t (足以容納指針)intmax_t, uintmax_t (最大寬度)int_fast8_t... (最快存取)int_least8_t... (至少該寬度)