Skip to content

C 数据类型

C 提供了丰富的基本类型和派生类型。本章将系统梳理整型、浮点型、字符型、枚举、数组、结构体、共用体、指针等。

1. 基本类型

  • 整型:short, int, long, long long(含有符号/无符号)
  • 字符型:char(常用于存储字符或小整数)
  • 浮点型:float, double, long double
  • 布尔:_Boolstdbool.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 程序的关键。

本站内容仅供学习和研究使用。