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