C语言的数据类型可以分为三大类:基本数据类型、构造数据类型 和 指针类型,你问的“简单的数据类型”通常指的就是 基本数据类型。
下面我将详细讲解这些基本数据类型,并附上示例。
基本数据类型
这是最核心、最常用的数据类型,它们是构成程序的基本单元,主要分为四类:整型、浮点型、字符型和空类型。
整型
用于存储整数,没有小数部分。
| 数据类型 | 字节大小 | 取值范围 (常见32/64位系统) | 描述 |
|---|---|---|---|
char |
1 字节 | -128 到 127 | 通常用于存储字符,但在底层它是一个小的整数。 |
short |
2 字节 | -32,768 到 32,767 | 短整型,范围较小。 |
int |
4 字节 | -2,147,483,648 到 2,147,483,647 | 整型,最常用的整数类型。 |
long |
4 或 8 字节 | 范围比 int 大 |
长整型,范围取决于系统。 |
long long |
8 字节 | -9,223,372,036,854,775,808 到 9,223,372,036,854,775,807 | 双长整型,保证至少64位,范围非常大。 |
signed 和 unsigned 修饰符:
默认情况下,整型是 signed(有符号的),可以存储正数、负数和0。
使用 unsigned(无符号的)修饰符后,变量只能存储非负数(0和正数),但正数的范围会扩大一倍。
signed int(或int):范围如上表。unsigned int:范围从 0 到 4,294,967,295。
示例代码:
#include <stdio.h>
int main() {
int age = 25; // 定义一个整型变量
unsigned short int count = 100; // 定义一个无符号短整型
long long population = 7800000000LL; // 定义一个长长整型,LL后缀表示long long
printf("My age is: %d\n", age);
printf("Count is: %u\n", count); // %u 用于打印无符号整数
printf("World population is: %lld\n", population); // %lld 用于打印long long
return 0;
}
浮点型
用于存储带有小数部分的实数。
| 数据类型 | 字节大小 | 精度 | 描述 |
|---|---|---|---|
float |
4 字节 | 约 6-7 位有效数字 | 单精度浮点数。 |
double |
8 字节 | 约 15-16 位有效数字 | 双精度浮点数,比 float 精度更高,范围更大。 |
long double |
8 或 16 字节 | 通常比 double 更高 |
长双精度浮点数,精度最高。 |
示例代码:
#include <stdio.h>
int main() {
float price = 19.99f; // 定义一个单精度浮点数,f后缀表示float
double pi = 3.14159265358979; // 定义一个双精度浮点数
long double large_number = 1.234567890123456789L; // L后缀表示long double
printf("The price is: %.2f\n", price); // %.2f 保留两位小数
printf("The value of pi is: %.15f\n", pi);
printf("A large number is: %.18Lf\n", large_number); // %Lf 用于打印long double
return 0;
}
字符型
专门用于存储单个字符,如 'A', 'b', '$', '7'。
| 数据类型 | 字节大小 | 描述 |
|---|---|---|
char |
1 字节 | 存储字符,本质上是一个小的整数(ASCII码)。 |
重要概念:
字符在内存中是以其对应的ASCII码值存储的。char 类型可以参与整数运算。
示例代码:
#include <stdio.h>
int main() {
char grade = 'A'; // 用单引号括起来表示字符
char ascii_value = 65; // 65是字符'A'的ASCII码
printf("My grade is: %c\n", grade);
printf("The ASCII value of 'A' is: %d\n", grade); // 用 %d 打印,会显示其ASCII码值
printf("The character for ASCII 65 is: %c\n", ascii_value);
return 0;
}
空类型
void 是一个特殊的数据类型,字面意思是“空的”、“无类型的”。
- 函数返回值:当一个函数不返回任何值时,其返回类型被声明为
void。 - 函数参数:当一个函数不接受任何参数时,其参数列表被声明为
void。 - 通用指针:
void *类型的指针可以指向任何类型的数据,但在使用前必须进行强制类型转换。
示例代码:
#include <stdio.h>
// 一个不返回任何值的函数
void print_greeting() {
printf("Hello, World!\n");
}
int main() {
print_greeting(); // 调用无返回值的函数
return 0; // main函数默认返回int类型,0表示程序正常结束
}
类型修饰符
除了上述基本类型,还可以使用 signed、unsigned、short、long 等关键字来修饰基本类型,以改变它们的取值范围或大小,这些修饰符可以组合使用,unsigned long long。
总结表格
| 类型分类 | 关键字 | 描述 |
|---|---|---|
| 整型 | char |
字符/小整数 |
short |
短整型 | |
int |
整型 (最常用) | |
long |
长整型 | |
long long |
双长整型 (范围最大) | |
| 浮点型 | float |
单精度浮点数 |
double |
双精度浮点数 (最常用) | |
long double |
长双精度浮点数 (精度最高) | |
| 字符型 | char |
单个字符 |
| 空类型 | void |
无类型,用于函数返回值或参数 |
对于初学者来说,掌握 int, float, double, 和 char 这四种基本类型就足以应对绝大多数简单程序了,理解它们的区别和用途是学好C语言的第一步。
