首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> C語言 >> C++ >> 關於C++

C++ 數據類型完整體系:基本、構造、派生與空類型

     編輯:關於C++

數據類型分類總覽

類別包含類型關鍵字/語法
基本類型字符、整數、浮點、布爾char, int, float, double, bool
構造類型結構體、共用體、類struct, union, class
派生類型數組、指針、引用[], *, &
枚舉類型命名常量集合enum / enum class (C++11)
空類型無值、不完整類型void

基本類型大小與範圍 (典型 64 位 Linux/Windows)

類型位元/字節範圍/精度備註
char / signed char8/1-128 ~ 127字符或小整數
unsigned char8/10 ~ 255字節操作首選
short / signed short16/2-32,768 ~ 32,767
unsigned short16/20 ~ 65,535
int / signed int32/4-2,147,483,648 ~ 2,147,483,647默認整數類型
unsigned int32/40 ~ 4,294,967,295
long32/4 (Win) 或 64/8 (Linux)平台相關不可假設長度
long long (C++11)64/8-9e18 ~ 9e18跨平台 64 位整數
float32/4~7 位有效數字, ±3.4e38IEEE 754 單精度
double64/8~15 位有效數字, ±1.7e308默認浮點類型
long double80/12-16~18-19 位擴展精度,平台差異大
bool8/1true(1)/false(0)邏輯判斷

最佳實踐:用 <cstdint> 固定寬度類型:int32_t, uint64_t, intptr_t 等,消除平台差異。

字符集與標識符規範

  • 源碼字符集:52 字母 + 10 數字 + 特殊符號 (_ + - * / % = < > & | ^ ~ ! ( ) { } [ ] ; : ' " , . ? #)。
  • 標識符:字母/下劃線開頭,後接字母/數字/下劃線,**區分大小寫**,不可為關鍵字。
  • C++11 允許 Unicode 標識符 (如 int 变量 = 1;),但團隊規範通常限制 ASCII。

類型修飾符

  • signed / unsigned:整數符號性 (char 單獨區分)。
  • short / long / long long:整數長度。
  • const:只讀語義,編譯期常量傳播優化。
  • volatile:防編譯器優化,硬體寄存器/多執行緒共享變量。
  • constexpr (C++11):編譯期可計算常量,可用於數組大小、模板參數。

sizeof 運算符:編譯期獲取類型/表達式大小


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 位假設。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved