2014-07-24 1 views
0

을 반환 않기 때문에 다음 코드 작성 :이유는 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 바이트 인 이유는 무엇입니까?

+0

가능한 복제본 [C++에서 열거 형 데이터의 크기는 얼마입니까?] (http://stackoverflow.com/questions/8115550/what-is-the-size-of-an-enum-type-data) -in-c) – Ranic

답변

1

각 열거 형은 값 (int)을가집니다. 이 값은 32 비트 컴퓨터의 경우 4 바이트 (또는 32 비트)로 코딩됩니다.

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

왜 각 열거 형은 Int입니까? 컴퓨터가 char *보다 int를 비교하는 것이 더 빠르고 간단하기 때문입니다 (예를 들어).

수정을 위해 Jashaszun에게 감사드립니다.

+2

값은 4 비트로 코딩되지 않습니다 ('int'는 보통 4 * bytes * 또는 32 * bits *입니다). 또한 "x32"가 아닌 "32 비트"입니다. – Jashaszun