什么是枚举
定义
enum weekday{Mon, Tues, Wed, Thurs, Fri, Sat, Sun};
像上面那样,当不写对应的值,枚举值默认从0开始,即等同于:
enum weekday{Mon = 0,Tues = 1,Wed = 2,Thurs = 3,Fri = 4,Sat = 5,Sun = 6};
当然,也可以像这样简写:
enum weekday{Mon = 0,Tues,Wed,Thurs,Fri,Sat,Sun};
使用
enum weekday day = Mon;
值只能是枚举类型中的一个,枚举在C语言中可以当一个int类型,enum是枚举型,所占内存空间恒等于4字节(声明不占用内存之前结构体有讲)。C 语言不会对枚举变量的赋值进行限制,C++ 进行了严格的限制。
联合体
使用方法和结构体一模一样,区别在于使用同一块内存,可以使用联合体来判断字节序
int IsBigEndian() {union {char c[2];short s;} value = {.s = 0x100};return value.c[0] == 1;}int IsBigEndian2() {short s = 0x100;char *p = (char*)&s;return p[0] == 1;}
返回 1 就是大端序,这是因为字节序不影响不同元素之间的顺序,只影响多字节单元素的字节顺序
