什么是枚举
定义
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 就是大端序,这是因为字节序不影响不同元素之间的顺序,只影响多字节单元素的字节顺序