2.2 数据类型及长度
C 语言只提供了下列几种基本数据类型:
数据类型 | 描述 |
---|---|
char | 字符型,1 个字节,可以存放本地字符集中的一个字符 |
int | 整型,通常反映了所用机器中整数的最自然长度 |
float | 单精度浮点型 |
double | 双精度浮点型 |
此外,还可以在这些基本数据类型的前面加上一些限定符
short
与 long
两个限定符用于限定整型:
short int sh;
long int counter;
在上述声明中,关键字 int
可以省略
short
与 long
两个限定符的引入可以为我们提供满足实际需要的不同长度的整型数
int
通常代表特定机器中整数的自然长度,可以为 16 位或 32 位
short
类型通常为 16 位,1ong
类型通常为 32 位
各编译器可以根据硬件特性自主选择合适的类型长度,但要遵循下列限制:
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(在采用对 2 的补码的机器上,采用反码等其它编码方式不一定是这个取值范围)
不带限定符的 char
类型对象是否带符号则取决于具体机器,但可打印字符总是正值
long double
类型表示高精度的浮点数
同整型一样,浮点型的长度也取决于具体的实现
float
、double
与 long double
类型可以表示相同的长度,也可以表示两种或三种不同的长度
有关这些类型长度定义的符号常量以及其它与机器和编译器有关的属性可以在标准头文件 <limits.h>
与 <float.h>
中找到
这些内容将在附录 B 中讨论