我想知道我的enum类型的大小是多少,所以我写了下面的代码:
#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("%dn",sizeof(port_config_t));
return 0;
}
但是我不能理解结果。为什么这个枚举的大小类型是4字节?
每个enum都有一个值(int)。对于32位计算机,该值以4字节(或32位)编码。
0000 CFG_MDIX
0001 CFG_FRAMEMAX
0010 CFG_OFF_ON_DC
0011 CFG_AUTONEG_EN
[...]
为什么每个enum都是Int ?因为对计算机来说,比较int比比较char*(例如)更快更简单。
谢谢Jashaszun的更正