C语言允许使用的数据类型有三类。
(1) 基本类型。不可再分的最基本的数据类型,包括整型、浮点(单精度)型、双精度型、字符型、无值类型、逻辑型及复数型。基本类型通常代表单个数据。
(2) 构造类型。由已知的基本类型通过一定的构造方法构造出来的类型,包括数组、结构体、联合体、枚举类型等。构造类型通常代表一批数据。
(3) 指针类型。指针可以指向内存地址,访问效率高,用于构造各种形态的动态或递归数据结构,如链表、树等。
1.1 基本数据类型
1.基本数据类型及其关键字
C99标准提供的7种基本数据类型及其对应的关键字如表所示。
数据类型 | 关键字 | 数据类型 | 关键字 |
字符型 | char | 无值类型 | void |
整型 | int | 逻辑型 | _bool |
浮点(单精度)型 | float | 复数型 | _complex_imaginary |
双精度型 | double |
|
|
字符型:描述单个字符;
整型:描述整数,整数在计算机上是准确表示的;
浮点型、双精度型:描述实数,实数在计算机上一般是近似表示的,浮点型的近似程度比较低,而双精度型的近似程度比较高。
无值类型:没有具体的值,通常用来描述无形式参数或无返回值的C函数,以及无定向指针。
逻辑型:描述逻辑真(其值为1)与逻辑假(其值为0)。
复数型:描述复数(_complex)和纯虚数(_imaginary)。
使用逻辑型时必须包含头文件stdbool.h,使用复数型时必须包含头文件complex.h。
2.基本数据类型的存储方式和取值范围、基本数据类型的扩展
类型 | 长度/字节 | 取值范围 | 存储方式 |
char | 1 | -128~127 | 有符号二进制补码形式 |
[signed]char | 1 | -128~127 |
|
unsigned char | 1 | 0~255 |
|
short [int] | 2 | -32768~32767 |
|
unsigned short [int] | 2 | 0~65535 |
|
int | 4 | -2147483648~2147483647 | 定点有符号二进制补码形式 |
[signed] int | 4 | -2147483648~2147483647 |
|
unsigned [int] | 4 | 0~4294967295 |
|
long [int] | 4 | -2147483648~2147483647 |
|
[signed] long [int] | 4 | -2147483648~2147483647 |
|
unsigned long [int] | 4 | 0~4294967295 |
|
float | 4 | -3.4*10^38~3.4*10^38 | 浮点形式存储 |
double | 8 | -1.798*10^308~1.798*10^308 | 浮点形式存储 |
long double | 8 | -1.798*10^308~1.798*10^308 |
|
short int<=int<=long int<=long long int
float<=double<=long double