整数类型
整数没有小数点。同是「整数」,宽度不同,范围就不同。范围装不下就溢出。
1. 概念:宽度与范围
| 类型 | 常见大小 | 大致范围(数量级) | 用途直觉 |
|---|
| short | 2 字节 | 约 ±3 万 | 省空间小整数 |
| int | 4 字节 | 约 ±21 亿 | 最常用 |
| long long | 至少 8 字节 | 很大 | 大计数 |
| unsigned int | 4 字节 | 0 ~ 约 42 亿 | 非负、位掩码 |
2. 完整例子
C
| 1 | #include <stdio.h> |
| 2 | |
| 3 | int main(void) { |
| 4 | int count = 10; |
| 5 | unsigned int flags = 0x0Fu; |
| 6 | short temp_c = 25; |
| 7 | |
| 8 | printf("count=%d\n", count); |
| 9 | printf("flags=%u\n", flags); |
| 10 | printf("temp=%d\n", temp_c); |
| 11 | printf("sizeof(int)=%zu\n", sizeof(int)); |
| 12 | return 0; |
| 13 | } |
3. 拆解
- %d 打印有符号整数,%u 打印无符号
- 0x0F 是十六进制写法,等于十进制 15
- sizeof(int) 在常见桌面/嵌入式环境多为 4,但要用实测不要死记
4. 溢出概念
C
| 1 | /* 概念示意:不要依赖溢出行为做业务逻辑 */ |
| 2 | unsigned int u = 0u; |
| 3 | u = u - 1u; // 无符号会回绕到很大值(如 0xFFFFFFFF) |
| 4 | /* 有符号溢出是未定义行为,可能异常 */ |