short int、int、long int、long long int
不同整型的输出
使用不同的格式控制符可以输出不同类型的整数,它们分别是:
%hd
用来输出 short int 类型,hd 是 short decimal 的简写;%d
用来输出 int 类型,d 是 decimal 的简写;%ld
用来输出 long int 类型,ld 是 long decimal 的简写。%lld
用来输出 long long int 类型
整型的长度
实际情况也确实如此,C语言并没有严格规定 short、int、long 的长度,只做了宽泛的限制:
- short 至少占用 2 个字节。
- int 建议为一个机器字长。32 位环境下机器字长为 4 字节,64 位环境下机器字长为 8 字节。
short 的长度不能大于 int,long 的长度不能小于 int。
总结起来,它们的长度(所占字节数)关系为:≤ short ≤ int ≤ long
> 这就意味着,short 并不一定真的”短“,long 也并不一定真的”长“,它们有可能和 int 占用相同的字节数。
早期的操作系统是16位系统,
- int用二字节表示,范围是 -2^15^ ~ +2^15^ - 1;
- long用4字节表示,范围是-2^31^ ~ +2^31^ - 1。
- 后来发展到32位操作系统,
int 用4字节表示,与long相同。 - 目前的操作系统已发展到64位操作系统,但因程序编译工艺的不同,两者表现出不同的差别:
32位编译系统:int占四字节,与long相同。
64位编译系统:int占四字节,long占8字节,long数据范围变为:-2^63^ ~ +2^63^ - 1
在标准中,并没有规定long一定要比int长,也没有规定short要比int短。
标准是这么说的:长整型至少和整型一样长,整型至少和短整型一样长。
这个的规则同样适用于浮点型long double至少和double一样长,double至少和float一样长。
至于如何实现要看编译器厂商.
Reference:
[1] C语言中的整数(short,int,long);
[2] 关于int、short int、long int、long long 的区别;
[3] long与int的区别?;