在cpp中枚举的内存需求是什么?

What is the memory requirement of an enum in cpp?

本文关键字:需求 是什么 内存 cpp 枚举      更新时间:2023-10-16

我正在创建一个具有许多部件的大规模模拟,我使用枚举来区分多个部件。我想知道使用枚举的内存成本是多少,因为我想保持部件占用的空间最小。

使用uint8_t代替enum是否更好?

在c++(任何版本)中,默认情况下枚举的底层类型是int,除非每个枚举值都不能表示为int。在这种情况下,使用实现定义的类型(一个大到足以表示每个枚举数值的类型)。注意,int的大小取决于您的机器。它可能是16位,但也可能是32位(即使在64位机器上)。最终由编译器决定。

从c++ 11开始,可以在声明枚举时指定底层类型,使用以下形式:

enum name : underlying_type { ... };
// For example
enum MySmallEnum : char { ... };

来源:cppreference.com

在C中,它似乎遵循与c++ (c++ 11之前)相同的规则。