掌握 C 語言的類型系統、常量表示法與變量定義規範,是寫出正確、可移植程式的基石。本文系統整理基本數據類型分類、常量的多種表示形式、變量定義與賦值規則,並釐清易混淆概念。
| 類別 | 關鍵字 | 說明 |
|---|---|---|
| 基本類型 | int | 有符號整數,通常 4 bytes |
| short | 短整數,通常 2 bytes | |
| long | 長整數,通常 4/8 bytes | |
| unsigned | 無符號修飾符,可組合上述類型 | |
| float | 單精度浮點數,4 bytes | |
| double | 雙精度浮點數,8 bytes | |
| char | 字元/小整數,1 byte | |
| enum | 列舉類型,本質為整數 | |
| void | 空類型,無值,用於函數返回、泛型指標 | |
| 構造類型 | 指標類型 | 存儲記憶體位址 |
| 陣列類型 | 固定大小同質元素集合 | |
| struct | 結構體,異質元素聚合 | |
| union | 共用體,共享記憶體空間 |
基本類型特徵:值不可再分,直接對應機器指令操作數。構造類型由基本類型組合而成。
#define PI 3.1415926 // 預處理器文字替換,無型別檢查
#define MAX_SIZE 1024
// 使用範例
float r, l, area;
scanf("%f", &r);
l = 2 * PI * r;
area = PI * r * r;
慣例:常量全大寫,變量小寫。常量值不可修改。
| 進制 | 前綴 | 範例 | 說明 |
|---|---|---|---|
| 十進制 | 無 | 237, -783, 65535 | 最常用 |
| 八進制 | 0 | 023 (十進制 19) | 數字 0-7,通常視為無符號 |
| 十六進制 | 0x / 0X | 0x23A, 0XAA, 0xFFF0 | 數字 0-9, A-F (不分大小寫) |
| 長整型 | 後綴 L/l | 123L, 012l, 0x15L | 強制 long 型別 |
| 無符號 | 後綴 U/u | 58u, 0xA5Lu | 可與進制前綴組合 |
| 形式 | 範例 | 說明 |
|---|---|---|
| 十進制小數 | 0.0, 0.34, 4.23 | 含小數點 |
| 指數形式 | 1.2E5, 3.14e-2 | E/e 後接指數,等同 1.2×10⁵ |
'a', '=', '?''\n' 換行, '\t' 定位, '\\' 反斜線本身"hello", "sdk sd s@""A" 佔 2 bytes ('A' + '\0'),'A' 佔 1 bytechar str[] = "hello";
資料類型 變量名1, 變量名2, ...;
// 例
int i, j, k;
float x, y;
char c1, c2;
int i, j, k;int i=3, j=4, k=8; ✓int i=j=k=5; ✗ (C 語言宣告中不支援)int, short, long, unsigned 等float, doublechar| 錯誤 | 正確做法 | 原因 |
|---|---|---|
| 字元常量用雙引號 | 用單引號 'a' | 雙引號為字串,含結束符 |
| 八進制誤用 8/9 | 僅用 0-7 | 八進制無 8/9 |
| 浮點常量省略小數點 | 寫 1.0 不寫 1 | 無小數點視為整數 |
| 字串缺少結束符 | 用雙引號或手動補 '\0' | 字串操作函數依賴結束符 |
| 宣告時鏈式賦值 | 分別初始化 | C 標準不允許 |
扎實掌握類型系統與常量/變量規範,能避免大量隱性 Bug,也是理解指標、記憶體佈局、型別轉換等進階主題的前提。