sizeof(enum)数据结构存储问题 http://hi.baidu.com/timeflashing_coldleaf/blog/item/d05523835e4575d2bd3e1e22.ht

typedef struct weekday_st 

enum week {sun=123456789,mon,tue,wed,thu,fri,sat,a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x,y,z,aa,ab,ac,ad,ae,af,ag,ah,ai,aj,ak}; 
enum day{monring, moon, aftermoon}; 
}weekday_st; 

int main(int argc, char *argv[]) 

printf("sizeof(weekday_st)=%d\n", sizeof(weekday_st)); 
printf("sizeof(weekday)=%d\n", sizeof(weekday_st::week)); 
printf("sizeof(day)=%d\n", sizeof(weekday_st::day)); 
return 0; 


sizeof(weekday_st)=1 
sizeof(weekday)=4 
sizeof(day)=4 
为什么sizeof整个结构是1,而无论enum里面的元素有几个,第一个初始值是多少,都是4呢?

printf("sizeof(weekday_st)=%d\n", sizeof(weekday_st)); 
这里因为结构体里面并没有定义任何的变量 
所以这个结构是空的,但是用sizeof进行运算的话也不能返回0 
因为毕竟存在着这么一个东西 
所以这时sizeof返回一个在机器里面所能表达的最小的存储单位的值 
一般的PC里面最小的存储单位的值是char 
所以sizeof返回1 

printf("sizeof(weekday)=%d\n", sizeof(weekday_st::week)); 
printf("sizeof(day)=%d\n", sizeof(weekday_st::day)); 
因为枚举量是当作整型常量来处理的 
所以上面这两个sizeof都是返回4

你可能感兴趣的:(sizeof(enum)数据结构存储问题 http://hi.baidu.com/timeflashing_coldleaf/blog/item/d05523835e4575d2bd3e1e22.ht)