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

时间:2016-06-23 18:12:41

标签: c++ memory enums

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

使用uint8_t而不是枚举更好吗?

1 个答案:

答案 0 :(得分:6)

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

从C ++ 11开始,您可以在声明枚举时指定基础类型,使用以下格式:

enum name : underlying_type { ... };

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

来源:cppreference.com

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