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