虽然int
的大小取决于CPU,long
似乎是32位(?)。但是对于大小并不重要的数字,使用int
似乎是非常直观的,就像在for循环中一样。
C ++同时具有long
和__int32
也令人困惑。当时的第二个是什么?
问题:我应该在什么情况下使用哪些类型的数字?
答案 0 :(得分:6)
int
和long
都没有固定大小(或任何固定的表示),只要它们可以保持特定的值范围(包括long
不能小于int
)。
对于特定尺寸,有一些类型,如int32_t
等(可能相同)。
并且__int32
不是标准C ++,而是特定于编译器的东西(例如MSVC)
答案 1 :(得分:2)
标准指定long
不短于int
- 在C ++标准§3.9.1中指定
C ++ 11引入了具有固定字节数的整数,如int32_t
。
答案 2 :(得分:-2)
注意int
即使在许多64位架构/编译器组合上也是32位(据我所知,64位版本的gcc和MSVC都使用32位)。另一方面,long
在64位编译器上通常为64位(但不在Windows上)。
这些仅是指导原则,您必须查看编译器手册以了解如何定义这些数据类型。