我正在尝试使用C和Assembly(intelx8086)语言。
我也在使用一个班级,我的一个朋友给了我一个
typedef enum data_10 {a=0,b=7,c=10,} data_10_type;
我想按比例使用这个类(AKA构造它/在Assembly上销毁它)。我的问题是,“枚举”需要多少记忆?
答案 0 :(得分:6)
尽管编译器可能因编译器而异,但enum
通常与int
的大小相同。但是,您必须始终使用sizeof( data_10_type );
答案 1 :(得分:2)
你为什么不打印它?
/* C99 */
#include <stdio.h>
typedef enum { a = 0, b = 7, c = 10 } data_10_type;
printf("%zu\n", sizeof(data_10_type));
枚举器列表中的标识符声明为类型为int
的常量(C11§6.7.2.2枚举说明符),因此sizeof(data_10_type)
通常等于{{ 1}},但没有必要!
BTW,如果你想要一个比特大小,只需使用sizeof(int)
常量(在CHAR_BIT
中定义),它表示单个字节中有多少位。)
<limits.h>
答案 2 :(得分:1)
枚举根本不会占用任何记忆;编译器可以理解它,并且在编译期间使用正确的数字。它是一个int,其大小取决于您的系统。