有没有理由不使用固定宽度类型

Is there a reason not to use fixed width types?

本文关键字:固定宽度 类型 有理由      更新时间:2023-10-16

我是C++新手。我正在学习类型、它们的内存用途以及基于体系结构的内存大小的差异。使用固定宽度类型(如int32_t)有什么缺点吗?

唯一真正的缺点可能是,如果您希望代码可移植到没有 32 位整数类型的系统。在实践中,这些非常罕见,但它们就在那里。

C++可以通过 cstdint 访问 C99(及更新)整数类型,这将使您能够访问 int_leastN_tint_fastN_t 类型,这可能是将特定位宽放入代码的最便携方式,如果您真的关心这一点。

int 类型的初衷是让它表示您正在运行的体系结构的自然大小;您可以假设对它的任何操作对于整数类型都是最快的。

如今,情况更加复杂。缓存效果或矢量指令优化可能倾向于使用小于自然大小的整数类型。

显然,如果你的算法需要至少一定大小的int,你最好明确说明它。

例如

要节省空间,请使用int_least32_t

为了节省时间,请使用int_fast32_t

但实际上,我个人不时使用long(至少 32 位)和int(至少 16 位),因为它们更容易打字。

(此外,int32_t是可选的,不保证存在。