为什么sizeof enum返回一个特定的值?



我想知道我的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的更正

相关内容

最新更新