早期的操作系统是16位系统,
- int 用2字节表示,范围是-2^15 ~ 2^15-1;
- long 用4字节表示,范围是-2^31 ~ 2^31-1。
后来发展到32位操作系统,
- int 用4字节表示,范围是-2^31 ~ 2^31-1;
- long 与 int 相同,也用4字节表示,范围是-2^31 ~ 2^31-1。
现在操作系统已发展到64位操作系统,但也有所差别:
- 32位编译系统:int占4字节,与long相同,范围是-2^31 ~ 2^31-1。
- 64位编译系统:int占4字节,long占8字节,long数据范围变为:-2^63~2^63-1
下图是在64位编译系统上的结果:
cppreference 给出的定义如下:
- int:basic integer type. It’s guaranteed to have a width of at least 16 bits. However, on 32/64 bit systems it is almost exclusively guaranteed to have width of at least 32 bits.
- long:target type will have width of at least 32 bits.
long long 是 C++ 的64位整型的基本类型,从C99开始引入这个概念,在后续的标准中完善概念和定义,官方正式标准如下:
- long long:target type will have width of at least 64 bits.(since C++11)
下表对不同的整数类型做了一个很好的总结:
閱讀更多 算法集市 的文章