早期的操作系統是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)
下表對不同的整數類型做了一個很好的總結:
閱讀更多 算法集市 的文章