2.2.2 整型
整型变量用来存储不带小数的数值,根据存储数值和分配存储空间的大小,整型变量可分为短整型(short int,可简写为short)、整型(int)和长整型(long int,可简写为long)。
表2.2说明了整型的分类及其表示范围,方括号里的内容是可选的,代表默认的选项。
整型量在内存中是用二进制补码以定点形式存放的,以short类型(2字节)为例,图2.3示意了整数是如何存储在内存单元中的。每个整型量是由符号位和数值位组成,符号占一位,0代表正,1代表负。在默认的情况下,整型变量假定为是有符号的,当使用unsigned关键字时,也可以把整型变量定义为无符号的。当然,定义整型变量时,也可以使用signed关键字,但这是多余的。
图 2.3 用2个字节表示一个整型数
提示
对int和unsigned int类型来说,在16位操作系统中,占用2个字节;在32位操作系统中,占用4个字节。换言之,对不同的机器和操作系统,int型所占的字节数可能不同,而short和long型则是固定的,因此,从可移植性的角度来说推荐使用short和long型来表示整型数。
简要讨论下size_t类型,这是为了方便系统之间的移植而定义的。举例来说,在32位系统中定义为unsigned int,在64位系统中定义为unsigned long,换言之,在32位系统中是32位无符号整型,在64位系统中是64位无符号整型。size_t一般用来表示一种计数,比如有多少东西被复制等,后面要介绍的sizeof运算符的返回结果类型便是size_t。除此之外,size_t类型对应着signed int和signed long版本。
说明
在学习了typedef的用法后可以发现,size_t往往是在头文件中通过“typedef size_t unsigned int”来实现的。