Enums 为什么sizeof enum返回某个值
我想知道我的枚举类型的大小,因此我编写了以下代码:Enums 为什么sizeof enum返回某个值,enums,typedef,sizeof,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,
#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;
}
#包括
typedef枚举端口配置{
CFG_MDIX,
CFG_FRAMEMAX,
CFG\u OFF\u ON\u DC,
CFG_AUTONEG_EN,
CFG_双工_集,
CFG_环回,
CFG\u进入率,
CFG_出口率,
}端口配置;
内部主(空)
{
printf(“%d\n”,大小为(端口配置);
返回0;
}
但我无法理解结果。为什么此枚举的大小类型为4字节?每个枚举都有一个值(int)。对于32位计算机,该值以4字节(或32位)编码
0000 CFG_MDIX
0001 CFG_FRAMEMAX
0010 CFG_OFF_ON_DC
0011 CFG_AUTONEG_EN
[...]
为什么每个枚举都是Int?因为计算机比较int比char*更快更简单(例如)
感谢Jashaszun的更正。可能重复的值不是用4位编码的(一个
int
通常是4字节或32位)。此外,它是“32位”,而不是“x32”。