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

nnr*_*les 1 c++ memory enums

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

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

Nel*_*eal 6

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

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

enum name : underlying_type { ... };

// For example
enum MySmallEnum : char { ... };
Run Code Online (Sandbox Code Playgroud)

资料来源:cppreference.com

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