一、基本数据类型
1. 整型(int):
通常占 4 个字节,具体大小取决于编译器和系统架构。
可以表示整数,取值范围一般为 -2147483648 到 2147483647。
-有不同的修饰符,如 short int(短整型,通常占 2 个字节)、long int(长整型,通常占 4 个字节或更多)等,可以调整整数的存储大小和取值范围。
2. 浮点型(float、double):
float :单精度浮点数,通常占 4 个字节,能表示的有效数字大约为 6 到 7 位。
double :双精度浮点数,通常占 8 个字节,能表示的有效数字大约为 15 到 16 位。
3. 字符型(char):
占 1 个字节,用于存储单个字符。
字符可以用 ASCII 码表示,例如 'A' 的 ASCII 码为 65。
可以进行算术运算,因为字符在计算机中实际上是以整数形式存储的。
二、枚举类型(enum)
由用户定义的一组命名常量,每个常量都有一个整数值。
例如: enum Weekday {Monday, Tuesday, Wednesday, Thursday, Friday, Saturday, Sunday}; 。
枚举常量的值默认从 0 开始递增,如果需要可以显式指定值。
三、派生数据类型
1. 指针类型(*):
用于存储变量的地址。
声明指针变量的语法为:数据类型 *指针变量名;例如 int *ptr; 声明了一个指向整数的指针。
可以通过指针间接访问其所指向的变量的值,使用 * 运算符解引用指针。
2. 数组类型([]):
一组相同数据类型的元素的集合。
声明数组的语法为:数据类型 数组名[数组大小];例如 int arr[10]; 声明了一个包含 10 个整数的数组。
可以通过下标访问数组中的元素,下标从 0 开始。
3. 结构体类型(struct):
可以将不同数据类型的变量组合在一起,形成一个新的数据类型。
声明结构体的语法为: struct 结构体名 {成员列表}; 。例如:
struct Person {
char name[50];
int age;
float height;
};
可以使用结构体变量来存储和操作一组相关的数据。
4. 共用体类型(union):
也称为联合体,与结构体类似,但所有成员共享同一块内存空间。
声明共用体的语法为: union 共用体名 {成员列表}; 。
在同一时间只能存储一个成员的值,其大小为最大成员所需的空间。
5. 函数类型:
函数也可以看作一种数据类型,函数名实际上是指向函数的指针。
可以将函数作为参数传递给其他函数,也可以从函数中返回一个函数指针。
四、数据类型的转换
1. 自动类型转换:
在不同数据类型的变量进行运算时,C 语言会自动进行类型转换,以保证运算的合法性。
一般情况下,低精度的数据类型会自动转换为高精度的数据类型。例如,在表达式中 int 和 float 进行运算时, int 会自动转换为 float 。
2. 强制类型转换:
可以使用强制类型转换运算符( (类型名) )将一个变量或表达式的类型转换为指定的类型。
例如: (float)i 将整数 i 强制转换为 float 类型。但强制类型转换可能会导致数据丢失或精度降低。