Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/sockets/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Enums 为什么sizeof enum返回某个值_Enums_Typedef_Sizeof - Fatal编程技术网

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”。