我应该在C++中使用 int 还是 long
Should I use int or long in C++?
虽然int
的大小取决于CPU,但long
似乎是32位(?)。但是,将int
用于大小并不重要的数字似乎非常直观,例如在 for 循环中。
同样令人困惑的是,C++既有long
又有__int32
。那么第二个是干什么的呢?
问:在什么情况下我应该使用什么数字类型?
int
和 long
都没有固定的大小(或任何固定的表示形式),只要它们可以保存特定的值范围(包括long
不能小于 int
)。
对于特定尺寸,有一些类型,如int32_t
等(可能相同)。
__int32
不是标准C++,而是特定于编译器的东西(例如。MSVC)
标准规定,long
不短于 int
- 在C++标准 §3.9.1 中指定
C++11 引入了具有固定字节数的整数,例如 int32_t
.
请注意,即使在许多 64 位架构/编译器组合上,int
也是 32 位(据我所知,64 位版本的 gcc 和 MSVC 都使用 32 位)。另一方面,long
通常在 64 位编译器上为 64 位(尽管在 Windows 上不是)。
只是指南,您始终必须查看编译器手册以了解这些数据类型是如何定义的。
相关文章:
- 为什么在全局范围内使用"extern int a"似乎不行?
- enum是C++中的宏变量还是整数变量
- 如果我只是不访问queue_front节点的子节点,而是将它们推到队列中呢?还是BFS吗
- 整数类型应该显式转换(例如"int"到"无符号")还是只会增加混乱?
- 通过 char* 缓冲区读取 int 的行为是不同的,无论是正数还是负数
- 通过引用传递基元类型(如 int、bool)是否比按值传递有任何加速?还是会恶化时间/空间的使用
- 我应该把我的枚举放在我的 int main() 外面还是里面
- 使用 #defines、枚举值还是 const int 来定义常量值更好
- 如何获取模板的类型,如模板<类型名 T>,并检查 T 是 int 还是浮点数或类
- 我应该在C++中使用 int 还是 long
- 如何测试输入是字符串还是int
- 使用 stringstream.fail() 检查输入是 int 还是 string
- C++:int数组[a][b][C]={0};未将所有值设置为0.是那个指令错了,还是我的输出函数出了问题
- 为什么C++会给我这个错误?如何判断int数组是奇数还是偶数
- 在表达式 bool <<整数中,bool 是提升为 int,还是提升为与整数相同的类型?
- 如何检查单个字符串输入的部分是int还是char
- 程序在检查值是int还是string时陷入循环
- 哪个更快:if(bool)还是if(int)
- 如果我想将字符提升为 int,我应该使用 static_cast(char 变量<int>)还是 +(char 变量),为什么?
- 执行 int 3 中断是否会停止 Linux 上的整个过程,还是仅停止当前线程