枚举、联合

枚举enum、联合union成员共用一个变量缓冲区

 

enum是一种基本数据类型,而不是一种构造类型,因为它不能再分解为任何基本类型

有些变量的取值被限定在一个有限的范围内

枚举值是常量不是变量,不能再对它赋值

0,1,2,3,4 …

enum weekday{sun,mon,tue,wed,thu,fri,sat};

weekday a, b;

enum weekday{sun,mon,tue,wed,thu,fri,sat}a,b;

enum {sun,mon,tue,wed,thu,fri,sat}a,b;

 

只能把枚举值赋予枚举变量,不能把元素的数值直接赋予枚举变量。如一定要把数值赋予枚举变量,则必须用强制类型转换

a=(enum weekday)2;    a = (weekday)2;

即 a=tue;

 

inline week operator++( week &rs, int ) {   //重载后++    a++时还需判断是否超出范围

       week oldWeek = rs;

       rs = (week)(rs + 1);

       return oldWeek;

}

 

 

union  所有成员共用一个空间,并且同一时间只能储存其中一个成员变量的值

union foo

{

       int I;

       char c;

       double k;

}

union foo bar;   8个字节

 

{char s[10]; int a;  }   10、 4   所以占12个字节

 

union的成员不可以为静态、引用,如果是自定型态的话,该自订型态成员不可以有建构函式、解构函式或是复制指定运算子。

 

对一个成员赋值,其他成员的值就不存在了。

posted @ 2017-07-14 22:24  xslwm  阅读(194)  评论(0编辑  收藏  举报