【发布时间】:2019-09-20 12:22:51
【问题描述】:
typedef enum enumStruc_2 {
ENUM_5 = 0xFFFFFFF0, ENUM_6, ENUM_7, ENUM_8
} enumStruc_2;
这里,枚举的大小是 4 个字节(整数大小)。它如何将其所有枚举成员值保存在 4 个字节内? 无论其成员的值如何,枚举大小总是 4 字节吗?
【问题讨论】:
-
enum有四个不同的顺序值。为了能够表示所有四个不同的值,需要不超过两位。由于编译器需要查看枚举才能使用它,因此它可以使用int作为基础类型轻松地表示它(实际上)。如果您平台上的本机int是 32 位的,那将解释sizeof给出的结果为 4。而且,不,枚举类型的大小不能保证为 4。它们的大小是实现定义的 - 标准对它们的大小应该保持沉默。 -
问题与C有关
-
当已有答案时,请不要编辑语言标签。是的,这应该只标记为 C,但是一旦发布了 C++ 答案,就为时已晚。对于同时带有 C 和 C++ 标签的案例,请考虑tag wiki 中的标签审核指南。