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

C語言數據類型分類總覽

     編輯:關於C語言

C語言數據類型分類總覽

C 語言類型系統嚴謹而靈活,理解其分類體系是掌握類型轉換、指針運算、內存佈局的前提。本文梳理標準分類與常見別名。

類型分類樹

基本類型 (Basic Types)
├── 整數類型 (Integer Types)
│   ├── 有符號 : signed char, short, int, long, long long (C99)
│   └── 無符號 : unsigned char, unsigned short, unsigned int, unsigned long, unsigned long long
├── 字符類型 : char (實現定義有符號性), signed char, unsigned char
├── 浮點類型 (Floating Types)
│   ├── float      (單精度, 通常 32 位 IEEE 754)
│   ├── double     (雙精度, 通常 64 位 IEEE 754)
│   └── long double (擴展精度, 80/128 位)
└── 枚舉類型 : enum

派生類型 (Derived Types)
├── 指針類型 : T*
├── 數組類型 : T[N]
├── 結構體類型 : struct { ... }
├── 聯合體類型 : union { ... }
└── 函數類型 : 返回類型 + 參數類型列表

空類型 : void (不完整類型,不可實例化)

類型修飾符 (Qualifiers)
├── const  (只讀)
├── volatile (易變)
├── restrict (C99, 無別名)
└── _Atomic (C11, 原子操作)

關鍵標準規定 (C99/C11)

  • int 至少 16 位,通常 32 位;
  • long 至少 32 位;
  • long long 至少 64 位 (C99 引入);
  • sizeof(char) == 1 (定義);
  • sizeof(short) ≤ sizeof(int) ≤ sizeof(long) ≤ sizeof(long long);
  • float ≤ double ≤ long double 精度遞增;
  • _Bool (C99) / bool (<stdbool.h>) 佔 1 字節,值 0/1。

常用固定寬度類型 (<stdint.h>, C99)

類型含義
int8_t, uint8_t精確 8 位有符號/無符號
int16_t, uint16_t精確 16 位
int32_t, uint32_t精確 32 位
int64_t, uint64_t精確 64 位
intptr_t, uintptr_t能容納指針的整數
intmax_t, uintmax_t最大寬度整數

最佳實踐:跨平台、網絡協議、文件格式、硬件寄存器操作**務必使用固定寬度類型**,避免 int/long 大小不一致導致的移植 Bug。

類型別名與 typedef

typedef unsigned char  BYTE;
typedef unsigned short WORD;
typedef unsigned long  DWORD;  // Windows 風格
typedef int32_t  i32;
typedef uint64_t u64;          // 現代風格

清晰的類型分類認知,能幫你在面對複雜聲明(如 int (*(*fp)[10])(void))時,按層級拆解、準確理解。

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