我们可以通过下面一个小程序来判断枚举变量的大小。
#include <stdio.h>
int main()
{
enum color
{
GREEN = 1,
RED,
BLUE,
GREEN_RED = 10,
GREEN_BLUE
}colorval;
printf("%d %d %d\n", GREEN, RED, BLUE);
printf("%d %d\n", GREEN_RED, GREEN_BLUE);
printf("size of enum = %ld\n", sizeof(colorval));
return 0;
}
我一开始想用colorval.GREEN,colorval.RED,colorval.BLUE…来表示枚举变量里面的成员。然后这样子表示,编译器是会报错的。为什么不能像结构体那样表示呢?因为结构体里面的成员是变量,而枚举里面的成员是常量。
因为,枚举变量的取值为花括号内的任意一个值(有且只能有其中一个值),而这个值是int型的,在ubuntu中,unsigned long int型的数据占内存4个字节。所以sizeof(colorval) = 4,也就是枚举变量的值为4。