在 C 语言中,数据类型指的是用于声明不同类型的变量或函数的一个广泛的系统,其中函数的类型指的是函数返回值的类型。对象的类型决定该对象可取值的集合以及可以对该对象执行的操作。
基本数据类型
C语言提供了下列几种基本数据类型
- char 字符型,占用一个字节,可以存放本地字符集中的一个字符。
- int 整型,占用四个字节,通常反映了所用机器中整数的最自然长度。
- float 单精度浮点型,占用四个字节。
- double 双精度浮点型,占用八个字节。
字符型
下表列出了关于字符类型的存储大小和值范围的细节:
| 类型 | 存储大小 | 取值范围 |
|---|---|---|
| char | 1字节 | -128到127或0到255 |
| unsigned char | 1字节 | 0到255 |
| signed char | 1字节 | -128到127 |
整型
下表列出了关于整数类型的存储大小和值范围的细节:
| 类型 | 存储大小 | 取值范围 |
|---|---|---|
| int | 2 或 4 字节 | -32,768 到 32,767 或 -2,147,483,648 到 2,147,483,647 |
| unsigned int | 2 或 4 字节 | 0 到 65,535 或 0 到 4,294,967,295 |
| short | 2 字节 | -32,768 到 32,767 |
| unsigned short | 2 字节 | 0 到 65,535 |
| long | 4 字节 | -2,147,483,648 到 2,147,483,647 |
| unsigned long | 4 字节 | 0 到 4,294,967,295 |
注:当用long或short限定符限定整型时,关键字int可以省路,通常很多人也习惯这样做。
浮点型
下表列出了关于标准浮点类型的存储大小、值范围和精度的细节:
| 类型 | 存储大小 | 取值范围 | 精度 |
|---|---|---|---|
| float | 4 字节 | 1.2E-38 到 3.4E+38 | 6 位小数 |
| double | 8 字节 | 2.3E-308 到 1.7E+308 | 15 位小数 |
| long double | 16 字节 | 3.4E-4932 到 1.1E+4932 | 19 位小数 |
注:上述内容皆适用于常见的64位系统,对于其他具体机器,可能会出现不同存储大小。
补充说明
short与long两个限定符的引入可以为我们提供满足实际需要的不同长度的整型数。int通常代表特定机器中整数的自然长度。编译器可以根据硬件性能特性自主选择合适的类型长度,但要遵循下列限制:short与int类型至少为16位,二long类型至少位32位,并且short类型不得长于int类型,而int类型不得长于long类型。
类型限定符signed与unsigned可用于限定char类型或任何整型。unsigned类型得数总是正值或0,并遵守算数模2^n,其中n是该类型占用的位数。例如,如果char对象占用8位,那么unsigned char类型变量的取值范围是0~255,而signed char类型变量的取值范围则为-128~127(在采用二进制补码的机器上)。不带限定符的char类型对象是否带符号取决于具体的机器,但可打印字符总是正值。
long double类型表示高精度浮点数。同整型一样,浮点型的长度也取决于具体的实现,float、double与long double类型可以表示相同的长度,也可以表示两种或三种不同的长度。
有关这些类型长度定义的符号常量以及其他与机器和编译器有关的属性可以在标准头文件<limits.h>与<float.h>中找到。