整型是 C 語言最基礎、使用最頻繁的數據類型。本文系統整理整型常量的多進制表示、變量分類與內存佈局、補碼存儲機制、定義規則與溢出行為,建立扎實的類型系統認知。
| 進制 | 前綴 | 合法數碼 | 範例(十進制值) | 非法範例 |
|---|---|---|---|---|
| 十進制 | 無 | 0-9 | 237, -568, 65535 | 023(前導0), 23D(非十進制碼) |
| 八進制 | 0 | 0-7 | 015(13), 0177777(65535) | 256(無前綴), 03A2, -0127 |
| 十六進制 | 0x/0X | 0-9, A-F/a-f | 0x2A(42), 0xFFFF(65535) | 5A(無前綴), 0x3H |
L/l:長整型(4 字節),如 158L、0x10000L(65536)。U/u:無符號型,如 358u、0x38Au。0xA5Lu 表十六進制無符號長整數 165。關鍵差異: 158(基本整型,2 字節)vs 158L(長整型,4 字節),數值相同但佔用空間與運算提升規則不同。

+10: 0000 0000 0000 1010 取反: 1111 1111 1111 0101 +1: 1111 1111 1111 0110 → 0xFFF6

最高位為符號位:0 正、1 負。
| 類型說明符 | 別名 | 字節數 | 範圍 |
|---|---|---|---|
int | 基本型 | 2 | -32,768 ~ 32,767 |
short int / short | 短整型 | 2 | -32,768 ~ 32,767 |
long int / long | 長整型 | 4 | -2,147,483,648 ~ 2,147,483,647 |
unsigned int / unsigned | 無符號基本型 | 2 | 0 ~ 65,535 |
unsigned short | 無符號短整型 | 2 | 0 ~ 65,535 |
unsigned long | 無符號長整型 | 4 | 0 ~ 4,294,967,295 |

type name1, name2, ...;
int a, b, c;
long x, y;
unsigned p, q;
main() {
int a=12, b=-24, c, d;
unsigned u=10;
c = a + u; // 22
d = b + u; // -14 (有符號運算)
printf("a+u=%d, b+u=%d\n", c, d);
}
main() {
int a = 32767, b;
b = a + 1; // -32768 (溢出環繞)
printf("%d, %d\n", a, b);
}

main() {
long x=5, y=6;
int a=7, b=8, c, d;
c = x + a; // long + int → long 結果,再截斷賦給 int
d = y + b;
printf("c=%d, d=%d\n", c, d); // 12, 14
}
不同類型運算時,編譯器自動按「整型提升 → 算術轉換」規則處理,結果類型為較高者,賦值時再截斷/擴展。
掌握進制前後綴、補碼存儲、類型範圍與字節數、定義規範、溢出環繞行為與混合運算自動轉換,是寫出正確、可移植 C 程式的基石。現代系統多為 32/64 位,int 通常 4 字節,但標準僅保證 short ≤ int ≤ long,跨平台代碼應使用 stdint.h 定寬類型(int32_t 等)。