| 類別 | 包含類型 | 關鍵字/語法 |
|---|---|---|
| 基本類型 | 字符、整數、浮點、布爾 | char, int, float, double, bool |
| 構造類型 | 結構體、共用體、類 | struct, union, class |
| 派生類型 | 數組、指針、引用 | [], *, & |
| 枚舉類型 | 命名常量集合 | enum / enum class (C++11) |
| 空類型 | 無值、不完整類型 | void |
| 類型 | 位元/字節 | 範圍/精度 | 備註 |
|---|---|---|---|
char / signed char | 8/1 | -128 ~ 127 | 字符或小整數 |
unsigned char | 8/1 | 0 ~ 255 | 字節操作首選 |
short / signed short | 16/2 | -32,768 ~ 32,767 | |
unsigned short | 16/2 | 0 ~ 65,535 | |
int / signed int | 32/4 | -2,147,483,648 ~ 2,147,483,647 | 默認整數類型 |
unsigned int | 32/4 | 0 ~ 4,294,967,295 | |
long | 32/4 (Win) 或 64/8 (Linux) | 平台相關 | 不可假設長度 |
long long (C++11) | 64/8 | -9e18 ~ 9e18 | 跨平台 64 位整數 |
float | 32/4 | ~7 位有效數字, ±3.4e38 | IEEE 754 單精度 |
double | 64/8 | ~15 位有效數字, ±1.7e308 | 默認浮點類型 |
long double | 80/12-16 | ~18-19 位 | 擴展精度,平台差異大 |
bool | 8/1 | true(1)/false(0) | 邏輯判斷 |
最佳實踐:用 <cstdint> 固定寬度類型:int32_t, uint64_t, intptr_t 等,消除平台差異。
_ + - * / % = < > & | ^ ~ ! ( ) { } [ ] ; : ' " , . ? #)。int 变量 = 1;),但團隊規範通常限制 ASCII。signed / unsigned:整數符號性 (char 單獨區分)。short / long / long long:整數長度。const:只讀語義,編譯期常量傳播優化。volatile:防編譯器優化,硬體寄存器/多執行緒共享變量。constexpr (C++11):編譯期可計算常量,可用於數組大小、模板參數。
cout << sizeof(int) << endl; // 4
cout << sizeof(double) << endl; // 8
cout << sizeof("hello") << endl; // 6 (含 \0)
int arr[10];
cout << sizeof(arr) << endl; // 40 (數組完整大小)
int* p = arr;
cout << sizeof(p) << endl; // 8 (指針大小,非數組)
sizeof 不計算表達式副作用:sizeof(i++) 不會改變 i。
理解類型體系是寫出可移植、高性能 C++ 代碼的前提。牢記:基本類型大小平台相關,用 <cstdint> 固定寬度;字符處理用 unsigned char 或 std::byte (C++17);避免直接用 long 做 64 位假設。