我应该在 C++ 中使用 int 还是 long?

Should I use int or long in C++?

虽然 int 的大小取决于 CPU,但 long 似乎是 32 位(?)。但是对于大小并不重要的数字使用 int 似乎很直观,比如在 for 循环中。

令人困惑的是,C++ 同时具有 long__int32。那么第二个是什么?

问题:在什么情况下应该使用什么数字类型?

标准规定,long 不短于 int - 在 C++ 标准 §3.9.1

中指定

C++11 引入了具有固定字节数的整数,例如 int32_t.

intlong 都没有固定大小(或根本没有任何固定表示),只要它们可以容纳特定的值范围(包括 long 可以) t 小于 int)。

具体尺码,有int32_t等类型(可能相同)。

而且 __int32 不是标准的 C++,而是特定于编译器的东西(例如 MSVC)

请注意,即使在许多 64 位 architecture/compiler 组合中,int 也是 32 位(据我所知,64 位版本的 gcc 和 MSVC 都使用 32 位)。另一方面,long 在 64 位编译器上通常是 64 位(但在 Windows 上不是)。

虽然这些只是指南,但您始终需要查看编译器手册以了解这些数据类型是如何定义的。