整数(short,int,long)
现代操作系统中 int 一般占用4个字节内存,共计32位(Bit)。
让整数占用更少的内存可以在 int 前边加 short,让整数占用更多的内存可以在 int 前边加long,例如:
这样 a、b、c 只占用2个字节的内存,而 m、n、p 可能占用8个字节的内存。
也可以将 int 省略,只写 short 和 long,如下所示:
这样的写法更加简洁,实际开发中常用。
总结起来,C语言中共有三种整数类型,分别是 short、int 和 long。int 称为整型,short 称为短整型,long 称为长整型。
整数的长度
C语言并没有严格规定 short、int、long 所占用的字节数,只做了宽泛的限制:
short 至少占用2个字节。
long 建议为一个机器字长。32位环境下机器字长为4字节,64位环境下机器字长为8字节。
short 的长度不能大于 int,long 的长度不能小于 int。
对于32位的 Windows、Linux 和 OS X,short 为2个字节,int 为4个字节,long 也为4个字节。PC和服务器上的32位系统占有率也在慢慢下降,嵌入式系统使用32位越来越多。
在64位环境下,不同的操作系统会有不同的结果,如下所示(长度以字节计):
操作系统
short
int
long
Win64
2
4
4
类Unix系统(包括 Unix、Linux、OS X、BSD、Solaris 等)
2
4
8
目前我们使用较多的PC系统为 Win XP、Win 7、Win 8、Win 10、Mac OS X、Linux,short 和 int 的长度都是固定的,分别为2和4,大家可以放心使用,long 的长度在 Win64 和类Unix系统下会有所不同,使用时要注意移植性。
获取某个数据类型的长度可以使用 sizeof 操作符,如下所示:
在Win7下的运行结果为:
sizeof 用来获取某个数据类型或变量所占用的字节数,如果后面跟的是变量名称,那么可以省略( )
,如果跟的是数据类型,就必须带上( )
。
需要注意的是,sizeof 是C语言中的操作符,不是函数,所以可以不带( )
。
不同进制的整数
C语言中的整数除了可以使用十进制,还可以使用八进制和十六进制。
1) 八进制
八进制由 0~7 八个数字组成,使用时必须以0
开头(注意是数字 0,不是字母 o),例如:
2) 十六进制
十六进制由数字 0~9、字母 A~F 或 a~f 组成,使用时必须以0x
或0X
(不区分大小写)开头,例如:
3) 十进制
十进制由 0~9 十个数字组成,没有任何前缀,和我们平时的书写格式一样,不再赘述。
注意:C语言中只能使用八进制、十进制和十六进制,不能直接使用二进制,它没有特定的前缀。
各种整数的输出
在使用 printf 输出整数时,不同的控制字符会有不同的输出格式。
1) 输出 int 使用%d
,输出 short 使用%hd
,输出 long 使用%ld
。请看下面的例子:
运行结果:
2) 输出十进制使用%d
,输出八进制使用%o
(注意是字母 o,不是数字 0),输出十六进制使用%x
或%X
。如果希望带上前缀,可以加#
,例如 %#d、%#o、%#x、%#X。请看下面的例子:
运行结果:
Last updated
Was this helpful?