【C语言】char unsigned char signed char
在C语言中,char
和 unsigned char
虽然都是1字节(通常8位)的数据类型,但它们在符号处理、数值范围和用途上有显著区别。以下是详细对比:
1. 核心区别
特性 | char | unsigned char |
---|---|---|
符号性 | 可能是signed 或unsigned (由编译器决定) | 明确无符号(仅非负数) |
数值范围 | 通常 -128 到 127 | 0 到 255 |
二进制表示 | 最高位为符号位 | 所有位表示数值 |
溢出行为 | 溢出时可能变为负数 | 溢出时回绕(如 255 + 1 = 0 ) |
典型用途 | 存储ASCII字符 | 处理二进制数据、位操作 |
2. 关键场景分析
(1) 符号性不确定问题
char c = 200; // 危险!可能是负数(依赖编译器)
unsigned char uc = 200; // 安全,始终为200
- 编译器依赖:
char
的符号性由实现定义(可通过编译选项调整,如-fsigned-char
/-funsigned-char
)。
(2) 数值范围差异
char c