整型
整型用于表示没有小数部分的整数,根据数值的范围和所占内存空间的不同,C语言提供了多种整型类型。
| 类型名称 | 关键字 | 描述 | 典型大小(字节) | 典型范围 |
|---|---|---|---|---|
| 基本整型 | int |
系统最自然的大小整数,通常与机器字长相同。 | 4 | -2,147,483,648 到 2,147,483,647 |
| 短整型 | short |
通常占用比 int 少的空间。 |
2 | -32,768 到 32,767 |
| 长整型 | long |
通常占用比 int 相同或更多的空间。 |
4 或 8 | -2,147,483,648 到 2,147,483,647 或更大 |
| 双长整型 | long long |
C99标准引入,保证至少64位,范围非常大。 | 8 | -9,223,372,036,854,775,808 到 9,223,372,036,854,775,807 |
修饰符:
signed:表示类型可以存储正数、负数和零,这是默认的整型修饰符。unsigned:表示类型只能存储非负数(0和正数),这使其正数范围是signed类型的两倍。
示例:
int a = 100; // 有符号基本整型 unsigned int b = 500; // 无符号基本整型 short c = -32768; // 有符号短整型 long d = 123456789L; // 有符号长整型 (L后缀表示long) long long e = 999999999999LL; // 有符号双长整型 (LL后缀表示long long)
浮点型
浮点型用于表示带有小数部分的实数,也称为实型。
| 类型名称 | 关键字 | 描述 | 典型大小(字节) | 精度 |
|---|---|---|---|---|
| 单精度浮点型 | float |
占用内存较少,精度较低,通常用于对精度要求不高的科学计算。 | 4 | 约6-9位有效数字 |
| 双精度浮点型 | double |
默认的浮点类型,占用内存较多,精度更高,是浮点运算的首选。 | 8 | 约15-17位有效数字 |
| 长双精度浮点型 | long double |
提供比 double 更高的精度(在某些实现中)。 |
8 或 16 | 通常比 double 更高 |
示例:
float price = 19.99f; // 单精度,f后缀表示float double pi = 3.1415926535; // 双精度,默认不加后缀 long double large = 1.23e100L; // 长双精度,L后缀表示long double
字符型
字符型用于表示单个字符,如字母、数字、标点符号等。
| 类型名称 | 关键字 | 描述 | 典型大小(字节) | 典型范围 |
|---|---|---|---|---|
| 字符型 | char |
存储 ASCII 或其他字符集中的字符,在C语言中,char 本质上是一个小范围的整型。 |
1 | -128 到 127 (signed) 或 0 到 255 (unsigned) |
修饰符:
和整型一样,char 也可以使用 signed 和 unsigned 修饰符,默认情况下,char 是 signed 还是 unsigned 由编译器决定。
示例:
char grade = 'A'; // 存储字符 'A' char newline = '\n'; // 存储换行符 (转义字符) unsigned char ch = 255; // 存储一个无符号字节值
空类型
| 类型名称 | 关键字 | 描述 |
|---|---|---|
| 空类型 | void |
void 的字面意思是“无类型”或“空类型”,它不表示任何数据值,主要有三个用途:函数返回值:表示函数不返回任何值。 函数参数:表示函数不接受任何参数。 通用指针: void* 类型的指针可以指向任何类型的数据(但不能直接解引用,需要先强制类型转换)。 |
示例:
// 函数不返回值
void print_message() {
printf("Hello, World!\n");
}
// 函数不接受参数
int get_input(void) {
int value;
scanf("%d", &value);
return value;
}
总结表格
| 类别 | 关键字 | 描述 |
|---|---|---|
| 整型 | int, short, long, long long |
用于存储整数 |
| 浮点型 | float, double, long double |
用于存储带小数的实数 |
| 字符型 | char |
用于存储单个字符 |
| 空类型 | void |
表示无值,用于函数返回类型、参数和通用指针 |
补充说明
-
大小和范围:上表中的“典型大小”和“典型范围”是基于大多数现代32位或64位系统的(如Windows, Linux, macOS),C标准只规定了
sizeof(short) <= sizeof(int) <= sizeof(long) <= sizeof(long long)的最小关系,具体大小取决于编译器和目标平台,可以使用sizeof运算符来精确获取类型在当前环境下的大小。printf("Size of int: %zu bytes\n", sizeof(int)); printf("Size of double: %zu bytes\n", sizeof(double)); -
类型限定符:除了上述基本类型,C语言还提供了一些类型限定符来进一步修饰变量的特性,如
const(常量)、volatile(易变)、restrict( restrict)等,它们与基本数据类型结合使用,但不能单独构成数据类型。
