C语言的数据类型是构建程序的基础,它定义了变量可以存储的数据的种类、大小以及可以对其执行的操作,最基本的数据类型通常可以分为以下四大类:

(图片来源网络,侵删)
- 整型
- 浮点型
- 字符型
- 空类型
下面我们对每一类进行详细说明。
整型
整型用于存储没有小数部分的整数,如 -10, 0, 255 等。
| 类型 | 关键字 | 描述 | 典型大小 | 范围示例 (32位系统) |
|---|---|---|---|---|
| 基本整型 | int |
最常用的整型,大小通常与系统字长相同 | 4 字节 | -2,147,483,648 到 2,147,483,647 |
| 短整型 | short |
通常比 int 小,至少16位 |
2 字节 | -32,768 到 32,767 |
| 长整型 | long |
通常不小于 int,至少32位 |
4 或 8 字节 | -2,147,483,648 到 2,147,483,647 (或更大) |
| 长长整型 | long long |
保证不小于 long,至少64位 |
8 字节 | -9,223,372,036,854,775,808 到 9,223,372,036,854,775,807 |
| 无符号整型 | unsigned int |
只能存储非负整数,范围是相应有符号类型的两倍 | 4 字节 | 0 到 4,294,967,295 |
| 无符号短整型 | unsigned short |
同上 | 2 字节 | 0 到 65,535 |
| 无符号长整型 | unsigned long |
同上 | 4 或 8 字节 | 0 到 4,294,967,295 (或更大) |
| 无符号长长整型 | unsigned long long |
同上 | 8 字节 | 0 到 18,446,744,073,709,551,615 |
注意:
signed关键字是默认的,signed int和int是等价的。- 整型的大小(字节数)在不同编译器和操作系统上可能略有不同,但
sizeof运算符可以让你在编译时确定具体大小。
浮点型
浮点型用于存储带有小数部分的实数,如 14, -0.001, 0。

(图片来源网络,侵删)
| 类型 | 关键字 | 描述 | 典型大小 | 精度示例 |
|---|---|---|---|---|
| 单精度浮点型 | float |
32位浮点数,提供约7位有效数字 | 4 字节 | 1415927 |
| 双精度浮点型 | double |
64位浮点数,提供约15-16位有效数字 | 8 字节 | 141592653589793 |
| 长双精度浮点型 | long double |
通常比 double 精度更高或相同 |
8, 12, 或 16 字节 | 依赖于实现 |
注意:
- 在C语言中,如果一个浮点数没有后缀(如
14),它默认被当作double类型。 - 如果你想明确使用
float类型,可以在数字后加上f或F后缀(如14f)。
字符型
字符型用于存储单个字符,如 'A', 'z', '7', 。
| 类型 | 关键字 | 描述 | 典型大小 | 范围 |
|---|---|---|---|---|
| 字符型 | char |
存储一个字符,本质上是小整型(ASCII码) | 1 字节 | -128 到 127 (或有符号 0 到 255) |
重要概念:
- 字符的本质:在C语言中,
char类型实际上是一个小范围的整型,它存储的是字符在字符编码表(如ASCII)中对应的整数值。'A'的ASCII码是65,char c = 'A';实际上是将整数值65存储在变量c中。 - 有符号与无符号:
char类型本身可以是signed char(可以存储负数)或unsigned char(只能存储0-255),这取决于编译器的实现,如果你只关心字符本身,通常不需要关心这个细节。
空类型
空类型是一种特殊的类型,它不表示任何数据值。

(图片来源网络,侵删)
| 类型 | 关键字 | 描述 |
|---|---|---|
| 空类型 | void |
用于表示函数没有返回值。 用于表示函数没有参数。 作为通用指针的类型 ( void *)。 |
示例:
// 函数没有返回值
void print_message() {
printf("Hello, World!\n");
}
// 函数没有参数
int get_user_input(void) {
int input;
scanf("%d", &input);
return input;
}
总结表格
| 类别 | 关键字 | 描述 | 大小 (典型) |
|---|---|---|---|
| 整型 | int, short, long, long long |
存储整数 | 2, 4, 8 字节 |
| 浮点型 | float, double, long double |
存储带小数的数 | 4, 8, 12+ 字节 |
| 字符型 | char |
存储单个字符 | 1 字节 |
| 空类型 | void |
无类型,用于函数或指针 | N/A |
如何选择使用哪种类型?
- 整数:优先使用
int,如果确定数值不会超出short的范围,可以使用short节省内存,如果数值可能非常大,使用long long,如果确定数值是非负的,使用unsigned类型可以获得更大的正数范围。 - 小数:默认使用
double,因为它精度更高,性能在现代CPU上通常和float一样好,只在内存极其紧张或明确知道精度要求不高时才使用float。 - 字符:处理单个字符时,使用
char。 void:主要用于函数声明和指针,不能用来定义普通变量(如void a;是错误的)。
