C 语言的数据类型可以分为三大类:基本数据类型、构造数据类型 和 指针类型,基本数据类型是构成所有复杂数据类型的基础。

(图片来源网络,侵删)
C 语言的基本数据类型主要有以下四种:
- 整型
- 浮点型
- 字符型
- 枚举型
下面我们对每一种类型进行详细说明。
整型
整型用于表示整数,C 语言为了满足不同场景的需求(如内存占用、数值范围),提供了多种整型类型。
| 类型 | 关键字 | 描述 | 示例 |
|---|---|---|---|
| 基本整型 | int |
最常用的整型,其大小(通常是 4 字节)取决于编译器和操作系统。 | int age = 25; |
| 短整型 | short |
通常比 int 小(通常是 2 字节),用于节省内存。 |
short smallNumber = 100; |
| 长整型 | long |
通常与 int 相同或更大(通常是 4 或 8 字节)。 |
long bigNumber = 123456789L; |
| 长长整型 | long long |
保证至少 64 位(8 字节),用于表示非常大的整数。 | long long veryBigNumber = 123456789012345LL; |
修饰符
整型还可以用 signed(有符号)和 unsigned(无符号)来修饰,这决定了数值是否包含正负号。

(图片来源网络,侵删)
signed:可以存储正数、负数和零,这是默认行为。unsigned:只能存储非负数(0 和正数),由于不需要存储符号位,它能表示的正数范围是signed类型的两倍。
示例:
// 有符号短整型,范围通常是 -32768 到 32767 signed short int s_value = -100; // 无符号长整型,范围通常是 0 到 4294967295 unsigned long int u_value = 4000000000UL;
浮点型
浮点型用于表示带有小数部分的实数,C 语言提供了三种浮点类型,它们在精度和表示范围上有所不同。
| 类型 | 关键字 | 描述 | 示例 |
|---|---|---|---|
| 单精度浮点型 | float |
通常占用 4 字节(32位),提供约 7 位有效数字的精度。 | float price = 19.99f; |
| 双精度浮点型 | double |
通常占用 8 字节(64位),提供约 15-16 位有效数字的精度,这是最常用的浮点类型。 | double pi = 3.14159265359; |
| 长双精度浮点型 | long double |
精度和范围通常比 double 更高(至少和 double 一样),具体大小取决于实现。 |
long double highPrecision = 0.123456789012345L; |
注意: 在使用 float 或 long double 类型的字面量时,最好加上后缀 f 或 L,以告诉编译器使用对应的类型,而不是默认的 double。
字符型
字符型用于表示单个字符,如字母、数字、标点符号等。
| 类型 | 关键字 | 描述 | 示例 |
|---|---|---|---|
| 字符型 | char |
通常占用 1 字节(8位),它本质上是一个小整型,在内存中存储的是字符对应的 ASCII 码值。 | char grade = 'A'; |
char 同样可以被 signed 或 unsigned 修饰。
signed char:范围通常是 -128 到 127。unsigned char:范围通常是 0 到 255。
示例:
char c = 'Z'; // 变量 c 存储的是字母 'Z' 的 ASCII 码值 (90) // 字符可以和整数进行运算 char next_char = c + 1; // next_char 的值将是 'a' (ASCII 91)
枚举型
枚举类型允许你定义一个由命名常量组成的集合,它使代码更具可读性,并且可以防止使用无效的值。
| 类型 | 关键字 | 描述 | 示例 |
|---|---|---|---|
| 枚举型 | enum |
用户自定义的类型,其变量只能被赋值为预定义的常量之一。 | enum { RED, GREEN, BLUE }; |
示例:
// 定义一个名为 Color 的枚举类型
enum Color {
RED, // 默认值为 0
GREEN, // 默认值为 1
BLUE // 默认值为 2
};
// 使用枚举类型
enum Color favorite_color = BLUE;
// 也可以为枚举常量指定值
enum Weekday {
MONDAY = 1,
TUESDAY,
WEDNESDAY,
THURSDAY,
FRIDAY,
SATURDAY,
SUNDAY
};
总结表格
| 类型分类 | 关键字 | 大小(典型值) | 描述 |
|---|---|---|---|
| 整型 | int |
4 字节 | 标准整数 |
short / short int |
2 字节 | 较短的整数 | |
long / long int |
4 或 8 字节 | 较长的整数 | |
long long / long long int |
8 字节 | 非常长的整数 | |
| 浮点型 | float |
4 字节 | 单精度浮点数 |
double |
8 字节 | 双精度浮点数 | |
long double |
8 或 16 字节 | 高精度浮点数 | |
| 字符型 | char |
1 字节 | 单个字符 |
| 枚举型 | enum |
通常与 int 相同 |
一组命名的整型常量 |
重要提示:
C 语言标准只规定了每种类型的最小大小,并未规定其确切大小。int 必须至少为 16 位,但现代系统上通常是 32 位,如果你需要确定特定类型在某个平台上的确切大小,可以使用 sizeof 运算符。
#include <stdio.h>
int main() {
printf("Size of int: %zu bytes\n", sizeof(int));
printf("Size of float: %zu bytes\n", sizeof(float));
printf("Size of double: %zu bytes\n", sizeof(double));
printf("Size of char: %zu bytes\n", sizeof(char));
return 0;
}
