C++

image-20210415171159948

不同整型的输出

使用不同的格式控制符可以输出不同类型的整数,它们分别是:

  • %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的区别?;

评论

This is just a placeholder img.