C 数据类型
C 提供了丰富的基本类型和派生类型。本章将系统梳理整型、浮点型、字符型、枚举、数组、结构体、共用体、指针等。
1. 基本类型
- 整型:
short,int,long,long long(含有符号/无符号) - 字符型:
char(常用于存储字符或小整数) - 浮点型:
float,double,long double - 布尔:
_Bool或stdbool.h中的bool
示例:
c
#include <stdbool.h>
short s = 1; unsigned int ui = 10u; long long ll = 1000ll;
char c = 'A'; bool ok = true; double pi = 3.14159;2. 字面量与后缀
- 整数后缀:
u,l,ll - 浮点后缀:
f,l - 进制:十六进制
0x2A,八进制052,二进制(C23 以前无标准化,可用宏/库)
3. sizeof 与对齐
c
printf("%zu\n", sizeof(int));sizeof 返回对象或类型占用的字节数。
4. 类型转换
- 隐式转换:算术运算时小类型向大类型提升
- 显式转换:
(int)3.14
5. 枚举(enum)
c
enum Color { RED=1, GREEN=2, BLUE=3 };6. 派生类型概览
- 数组:
int a[10]; - 指针:
int *p; - 结构体:
struct Point { int x; int y; }; - 共用体:
union Data { int i; float f; char c; };
7. 常量限定与限定符
const只读volatile防止优化导致忽视变化(如硬件寄存器)restrict指针别名优化提示(C99)
8. 字符与字符串
- 字符常量:
'A' - 字符串字面量:
"Hello"(以\0结尾)
9. 浮点注意事项
- 精度有限,比较时避免直接
== - 使用
fabs(a-b) < 1e-9之类的容差比较
10. 小结
正确理解数据类型、大小与转换规则,是编写健壮可移植 C 程序的关键。