为什么sizeof枚举返回一定值

时间:2014-07-24 19:01:51

标签: enums typedef sizeof

我想知道我的枚举类型的大小是什么,所以我写了下面的代码:

#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字节?

1 个答案:

答案 0 :(得分:1)

每个枚举都有一个值(int)。对于32位计算机,该值以4字节(或32位)编码。

0000  CFG_MDIX
0001  CFG_FRAMEMAX
0010  CFG_OFF_ON_DC
0011  CFG_AUTONEG_EN
[...]

为什么每个枚举都是Int?因为计算机比char更快更简单(例如)。

谢谢Jashaszun的纠正。