![bf1ec577dea29a5f1e0ad7cbeaa4d8b8.png](https://img-blog.csdnimg.cn/img_convert/bf1ec577dea29a5f1e0ad7cbeaa4d8b8.png)
早期的操作系统是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位编译系统上的结果:
![a71f993f3c9a0ff4e0b24dc46a498c14.png](https://img-blog.csdnimg.cn/img_convert/a71f993f3c9a0ff4e0b24dc46a498c14.png)
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)
下表对不同的整数类型做了一个很好的总结:
![1d32aeb24f50118ff3b8cc213973f793.png](https://img-blog.csdnimg.cn/img_convert/1d32aeb24f50118ff3b8cc213973f793.png)