有没有理由不使用固定宽度类型
Is there a reason not to use fixed width types?
我是C++新手。我正在学习类型、它们的内存用途以及基于体系结构的内存大小的差异。使用固定宽度类型(如int32_t)有什么缺点吗?
唯一真正的缺点可能是,如果您希望代码可移植到没有 32 位整数类型的系统。在实践中,这些非常罕见,但它们就在那里。
C++可以通过 cstdint
访问 C99(及更新)整数类型,这将使您能够访问 int_leastN_t
和 int_fastN_t
类型,这可能是将特定位宽放入代码的最便携方式,如果您真的关心这一点。
int
类型的初衷是让它表示您正在运行的体系结构的自然大小;您可以假设对它的任何操作对于整数类型都是最快的。
如今,情况更加复杂。缓存效果或矢量指令优化可能倾向于使用小于自然大小的整数类型。
显然,如果你的算法需要至少一定大小的int
,你最好明确说明它。
例如
要节省空间,请使用int_least32_t
为了节省时间,请使用int_fast32_t
但实际上,我个人不时使用long
(至少 32 位)和int
(至少 16 位),因为它们更容易打字。
(此外,int32_t
是可选的,不保证存在。
相关文章:
- 如何检查是否定义了固定宽度的整数
- 当我尝试将范围值存储为 8 位的固定宽度整数时,它向我显示一些其他值 [ASCII]
- 是否有缺少固定宽度类型(intXX_t)的平台
- 何时应使用 C++ 固定宽度整数类型,它们如何影响性能?
- 使用固定宽度整数时,C 98 pedtical错误
- 使用固定大小类型时强制对位字段(C++14 之前)进行签名
- 使用固定整数类型的安全性
- 为什么特征矩阵库的固定大小类型与积分数据不是 PoD?
- 为什么固定宽度类型会委托回基元
- 有没有理由不使用固定宽度类型
- 如何在 Windows 窗体应用程序 (C++) 中使用固定宽度整数
- iomanip /固定宽度持久性
- 为什么 std::setprecision(6) 在固定宽度模式式传输超过 6 位数字
- 具有无限参数但具有相同(固定)类型的C++函数
- 在 STL 中使用 void* 作为固定宽度记录
- 删除浮点数上的科学记数法,而不强制固定宽度
- 为什么 stoi、stol 不是固定宽度的整数
- 在标准C++中是否存在固定宽度的布尔类型
- 固定宽度整数类型 std::uint8_t 和 std::int8_t 的实现,C++
- 固定宽度整数类型是否保证是标准内置类型的typedefs