我应该在 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
.
int
和 long
都没有固定大小(或根本没有任何固定表示),只要它们可以容纳特定的值范围(包括 long
可以) t 小于 int
)。
具体尺码,有int32_t
等类型(可能相同)。
而且 __int32
不是标准的 C++,而是特定于编译器的东西(例如 MSVC)
请注意,即使在许多 64 位 architecture/compiler 组合中,int
也是 32 位(据我所知,64 位版本的 gcc 和 MSVC 都使用 32 位)。另一方面,long
在 64 位编译器上通常是 64 位(但在 Windows 上不是)。
虽然这些只是指南,但您始终需要查看编译器手册以了解这些数据类型是如何定义的。
虽然 int
的大小取决于 CPU,但 long
似乎是 32 位(?)。但是对于大小并不重要的数字使用 int
似乎很直观,比如在 for 循环中。
令人困惑的是,C++ 同时具有 long
和 __int32
。那么第二个是什么?
问题:在什么情况下应该使用什么数字类型?
标准规定,long
不短于 int
- 在 C++ 标准 §3.9.1
C++11 引入了具有固定字节数的整数,例如 int32_t
.
int
和 long
都没有固定大小(或根本没有任何固定表示),只要它们可以容纳特定的值范围(包括 long
可以) t 小于 int
)。
具体尺码,有int32_t
等类型(可能相同)。
而且 __int32
不是标准的 C++,而是特定于编译器的东西(例如 MSVC)
请注意,即使在许多 64 位 architecture/compiler 组合中,int
也是 32 位(据我所知,64 位版本的 gcc 和 MSVC 都使用 32 位)。另一方面,long
在 64 位编译器上通常是 64 位(但在 Windows 上不是)。
虽然这些只是指南,但您始终需要查看编译器手册以了解这些数据类型是如何定义的。