變數使用前必須聲明,聲明包含三面向:資料類型、儲存類型、作用域。本章聚焦資料類型。
C 語言資料類型分四大類:
void,用於無返回值的函數執行期間值不變者為常量,可變者為變數。常量可直接引用,變數必須先聲明後使用。結合類型可分為:整型常量/變數、浮點常量/變數、字符常量/變數、枚舉常量/變數。
| 進制 | 前綴 | 數碼範圍 | 合法範例 | 非法範例 |
|---|---|---|---|---|
| 八進制 | 0 | 0-7 | 015, 0101, 0177777 | 256(無前綴), 03A2(含非法碼), -0127(負號) |
| 十六進制 | 0x / 0X | 0-9, A-F, a-f | 0x2A, 0XA0, 0XFFFF | 5A(無前綴), 0X3H(含非法碼) |
| 十進制 | 無 | 0-9 | 237, -568, 65535 | 023(不可有前導0), 23D(含非法碼) |
L / l:長整型(佔 4 位元組)。如 158L、0X10000L(65536)U / u:無符號型。如 358u、0x38Au0XA5Lu 表示十六進制無符號長整數注意: 158L 與 158 數值相同,但前者佔 4 位元組,後者佔 2 位元組(16 位機器),影響運算與輸出格式。
| 類型聲明符 | 說明 | 佔用位元組 | 數值範圍 |
|---|---|---|---|
| int / signed int | 基本整型 | 2 | -32768 ~ 32767 |
| short int / short | 短整型 | 2 | -32768 ~ 32767 |
| long int / long | 長整型 | 4 | -2147483648 ~ 2147483647 |
| unsigned int / unsigned | 無符號基本型 | 2 | 0 ~ 65535 |
| unsigned short | 無符號短整型 | 2 | 0 ~ 65535 |
| unsigned long | 無符號長整型 | 4 | 0 ~ 4294967295 |
類型聲明符 變數名1, 變數名2, ...;
int a, b, c;
long x, y;
unsigned p, q;
規則: 同類型可一次聲明多個,逗號分隔;最後以分號結尾;聲明必須在使用之前,通常置於函數體開頭。
[Practice] //1
int a,b; short int c; short d=100;
a=d-20; b=a+d; c=a+b+d; d=d-a+c-b;
// 追蹤變數值變化...
[Practice] //2
int a=5, b=9; long int c; long d;
c=a+b-7; d=a*b*c; c=d*d*d; a=c-d;
// 注意長整型運算溢位行為
void main() {
long x=5, y=6; int a=7, b=8, c, d;
c = x + a; // long + int → long,但 c 是 int,發生截斷
d = y + b;
printf("c=%d, d=%d", c, d);
}