我想知道怎么做。
我看过这个话题,我明白“类型的选择是实现定义的。”,但我很想知道如何得到 1 而不是 4。
C++11 引入了一种更改枚举基础类型的方法。
enum foo : char { ... };
enum class foo : char { ... };
int
不过,在大多数情况下,使用默认值可能会更好。
在 GCC 上,您还可以使用 'packed' 属性告诉编译器您更关心空间而不是字对齐/访问速度:
enum foo { ... } __attribute__((packed));
其他编译器也有类似的提示。
(这在尝试避免编译器或 IDE 尚不支持的任何 C++11 功能时很有用。)