C 語言類型分類
- 基本類型:整型、字符、浮點(單/雙精度)、枚舉。
- 構造類型:數組、結構體、聯合體。
- 指針類型、空類型 (void)。
1. 整型 int 範圍
#include <stdio.h>
#include <limits.h>
int main() {
printf("int 範圍: %d .. %d\n", INT_MIN, INT_MAX);
return 0;
}
// 典型輸出: -2147483648 .. 2147483647 (32位系統)
2. 單精度浮點 float 範圍
#include <float.h>
printf("float 範圍: %e .. %e\n", FLT_MIN, FLT_MAX);
// 典型: 1.175494e-38 .. 3.402823e+38
3. 雙精度浮點 double 範圍
printf("double 範圍: %e .. %e\n", DBL_MIN, DBL_MAX);
// 典型: 2.225074e-308 .. 1.797693e+308
4. 字符類型 char 範圍
#include <limits.h>
printf("char 範圍: %d .. %d\n", CHAR_MIN, CHAR_MAX);
printf("char 位數: %d\n", CHAR_BIT); // 通常 8
// 有符號: -128 .. 127;無符號: 0 .. 255 (視編譯器默認)
5. 字符變量的多種賦值方式
char c;
c = 'A'; // 字符字面量
c = 65; // 十進制 ASCII 碼
c = 0x41; // 十六進制
c = 0101; // 八進制 (前導 0)
c = 'B' - 1; // 字符運算
c = 'B'; c--; // 自減
printf("%c %u\n", c, c); // 輸出字符及其 ASCII 碼
printf("%u\n", 'a' - 'A'); // 大小寫差值 32
常用轉義字符
| 轉義序列 | 含義 | ASCII 碼 |
\n | 換行 | 10 |
\t | 水平製表 | 9 |
\\ | 反斜槓 | 92 |
\' | 單引號 | 39 |
\" | 雙引號 | 34 |
\0 | 空字符 | 0 |
類型大小速查(典型 32/64 位系統)
| 類型 | 32位大小 | 64位大小 | 備註 |
char | 1 | 1 | 始終 1 字節 |
short | 2 | 2 | |
int | 4 | 4 | 通常 4 字節 |
long | 4 | 8 (LP64) / 4 (LLP64) | Windows 64 位為 4 |
long long | 8 | 8 | C99 標準 |
float | 4 | 4 | IEEE 754 單精度 |
double | 8 | 8 | IEEE 754 雙精度 |
指針 | 4 | 8 | 隨地址總線寬度 |
最佳實踐
- 使用
<stdint.h> 固定寬度類型(int32_t, uint64_t 等)提高可移植性。
- 浮點數比較避免
==,用絕對誤差 fabs(a-b) < EPS。
- 字符處理優先用
unsigned char 或 uint8_t 避免符號擴展陷阱。