我想知道我的枚举类型的大小是什么,所以我写了下面的代码:
#include <stdio.h>
typedef enum port_config_e {
CFG_MDIX,
CFG_FRAMEMAX,
CFG_OFF_ON_DC,
CFG_AUTONEG_EN,
CFG_DUPLEX_SET,
CFG_LOOPBACK,
CFG_INGRESS_RATE,
CFG_EGRESS_RATE,
}port_config_t;
int main(void)
{
printf("%d\n",sizeof(port_config_t));
return 0;
}
但我无法理解结果。为什么这个枚举类型的大小是4字节?
答案 0 :(得分:1)
每个枚举都有一个值(int)。对于32位计算机,该值以4字节(或32位)编码。
0000 CFG_MDIX
0001 CFG_FRAMEMAX
0010 CFG_OFF_ON_DC
0011 CFG_AUTONEG_EN
[...]
为什么每个枚举都是Int?因为计算机比char更快更简单(例如)。
谢谢Jashaszun的纠正。