整型
整型用于存储整数,即没有小数部分的数字,根据存储范围和占用内存大小的不同,C语言提供了多种整型类型。

(图片来源网络,侵删)
| 类型 | 关键字 | 描述 | 典型大小 (字节) | 典型范围 |
|---|---|---|---|---|
| 基本整型 | int |
最常用的整型,大小由系统决定(通常是32位) | 4 | -2,147,483,648 到 2,147,483,647 |
| 短整型 | short |
短整型,不大于 int |
2 | -32,768 到 32,767 |
| 长整型 | long |
长整型,不小于 int |
4 (32位系统) / 8 (64位系统) | 范围随系统变化 |
| 长长整型 | long long |
更长的整型,C99标准引入,不小于 long |
8 | -9,223,372,036,854,775,808 到 9,223,372,036,854,775,807 |
| 无符号整型 | unsigned |
只能存储非负数,可以与上述所有整型组合使用。 | 取决于其基础类型 | unsigned int: 0 到 4,294,967,295 |
代码示例:
#include <stdio.h>
int main() {
int myInt = 123;
short myShort = 32767;
long myLong = 123456789L; // L后缀表示long类型
long long myLongLong = 123456789012345LL; // LL后缀表示long long类型
unsigned int myUnsignedInt = 400;
printf("int: %d\n", myInt);
printf("short: %d\n", myShort);
printf("long: %ld\n", myLong); // %ld 用于打印long
printf("long long: %lld\n", myLongLong); // %lld 用于打印long long
printf("unsigned int: %u\n", myUnsignedInt); // %u 用于打印unsigned int
return 0;
}
浮点型
浮点型用于存储带有小数部分的数字,即实数,C语言提供了三种浮点类型,它们在精度和表示范围上有所不同。
| 类型 | 关键字 | 描述 | 典型大小 (字节) | 精度 |
|---|---|---|---|---|
| 单精度浮点型 | float |
单精度,占用内存小,精度较低 | 4 | 约7位有效数字 |
| 双精度浮点型 | double |
双精度,比 float 精度高,范围更广 |
8 | 约15-16位有效数字 |
| 长双精度浮点型 | long double |
长双精度,精度和范围不小于 double |
8 (或更多) | 通常不低于 double |
代码示例:
#include <stdio.h>
int main() {
float myFloat = 3.14159f; // f后缀表示float类型
double myDouble = 3.14159265358979; // 默认是double类型
long double myLongDouble = 3.141592653589793238L; // L后缀表示long double类型
printf("float: %.7f\n", myFloat); // %.7f 打印7位小数
printf("double: %.15f\n", myDouble); // %.15f 打印15位小数
printf("long double: %Lf\n", myLongDouble); // %Lf 用于打印long double
return 0;
}
字符型
字符型用于存储单个字符,如字母、数字、标点符号等,在C语言中,字符本质上是小整数值,它们在内存中以其对应的ASCII码值存储。

(图片来源网络,侵删)
| 类型 | 关键字 | 描述 | 典型大小 (字节) |
|---|---|---|---|
| 字符型 | char |
存储单个字符,通常为1字节 | 1 |
重要特性:
char可以被当作一个小整数来使用。char分为signed char(可以存储负数,范围-128到127)和unsigned char(只能存储非负数,范围0到255),具体取决于编译器,但通常默认是signed char。
代码示例:
#include <stdio.h>
int main() {
char myChar = 'A';
printf("Character: %c\n", myChar); // %c 用于打印字符
printf("ASCII value of A: %d\n", myChar); // %d 用于打印其ASCII码值
char newline = '\n'; // 转义字符,代表换行
printf("This will be on a new line%c", newline);
return 0;
}
空类型
空类型是一种特殊的类型,它不表示任何数据类型。
| 类型 | 关键字 | 描述 |
|---|---|---|
| 空类型 | void |
表示“无类型”或“无值” |
主要用途:

(图片来源网络,侵删)
- 函数返回值:当一个函数不返回任何值时,其返回类型被声明为
void。void printMessage() { printf("Hello, World!\n"); } - 函数参数:当一个函数不接受任何参数时,其参数列表可以声明为
void。int getRandomNumber(void) { return 42; } - 通用指针:
void *可以指向任何类型的数据,但在使用前必须进行强制类型转换。
总结表格
| 类别 | 关键字 | 描述 | 大小 (典型) |
|---|---|---|---|
| 整型 | int, short, long, long long |
存储整数 | 1, 2, 4, 8 字节 |
| 浮点型 | float, double, long double |
存储实数 | 4, 8, 8+ 字节 |
| 字符型 | char |
存储单个字符 | 1 字节 |
| 空类型 | void |
表示无类型或无值 | N/A |
如何选择合适的数据类型?
-
整数:
- 如果确定数值不会超出
short的范围,且需要节省内存,可以使用short。 - 对于大多数情况,
int是最自然、最常用的选择。 - 如果数值可能非常大,超出
int的范围,应使用long或long long。 - 如果数值永远是非负数(如年龄、计数器),使用
unsigned类型可以扩大正数范围。
- 如果确定数值不会超出
-
浮点数:
- 如果对精度要求不高(如游戏中的坐标、简单的科学计算),
float足够且节省内存。 - 对于需要高精度的计算(如财务、科学计算),应使用
double,这是浮点数运算中最常用的类型。 long double用于需要极致精度的特殊场景。
- 如果对精度要求不高(如游戏中的坐标、简单的科学计算),
-
字符:
- 只需要存储单个字符时,使用
char。
- 只需要存储单个字符时,使用
理解这些基本数据类型是学习C语言的第一步,它们是构建复杂程序和数据结构的基石。
