联合体类型
union Un
{
char a;
int b;
};
和结构体类似。它也是由多个不同类型的成员构成。不同的是,联合体的成员共用一块空间。所以也叫共用体。
联合体的大小至少是最大成员的大小。是成员中最大对齐数的整数倍。
改变b的值也会改变a的值。
联合体不能同时取所有成员的值,而只能取其中一个。
枚举类型
enum color
{
blue = 0,
red = 1,
yellow = 2
};
enum color s1 = blue;
枚举可以定义常量,枚举里面可以包含可能的全部取值。枚举中,定义完1个常量后,用逗号。
最后一个常量后面不跟逗号。
枚举有类型检查,有作用域,一次可以定义多个常量,便于调试,增加代码可读性。很多场景下适合用枚举而不是#define
枚举的每一个成员都有默认值,第一到最后一个依次从0递增。如果中间某个成员定义为388(或某个数),后面的也依次递增(389...不再按照默认值)。