联合体(共用体)和枚举

2017-11-26  本文已影响64人  耳_总

定义:联合体是不同类型的变量公用一块内存,相互覆盖,同时只能存在一种变量,联合体的大小等于最大成员的大小

union MyValue {
    int x;
    int y;
    double z;
};

void main() {
    union MyValue d1;
    d1.x = 10;
    d1.y = 100;
    
    printf("%d,%d,%f",d1.x,d1.y,d1.z);
    getchar();
}

打印:10,10,0.000000
d1.x = 10;
    d1.y = 100;
    d1.z = 34.8;
    printf("%d,%d,%f",d1.x,d1.y,d1.z);
打印:1717986918,1717986918,34.800000
枚举

和java一样,表示固定的数据

enum Day {
    Monday,
    Tuesday,
    Wednesday,
    Thursday,
    Friday,
    Saturday,
    Sunday,
};

void main() {
    enum Day day = Monday;
    printf("%d\n",day);
}
打印:0

枚举的成员定义用“,”隔开,直接用枚举里面的变量名称可以赋值,里面的值(如:Monday)默认值为0;从0开始一次是1、2、3...,但是也是可以赋值的,如:

enum Day {
    Monday = 1,
    Tuesday ,
    Wednesday,
    Thursday,
    Friday,
    Saturday,
    Sunday,
};

这样样子的话Tuesday为2,一次递增1,后面的值为3、4、5、6、7。

还要一种情况就是部分赋值

enum Day {
    Monday = 1,
    Tuesday,
    Wednesday = 6,
    Thursday,
    Friday,
    Saturday,
    Sunday,
};
enum Day day = Tuesday;
    printf("%d\n",day);
    day = Thursday;
    printf("%d\n",day);

打印:
2
7

这种情况就是赋值的那个之开始递增,碰到有自定义的赋值,之后从新的值递增,就上面而言Monday = 1,Tuesday = 2,到了Wednesday的时候我们自己赋值为6,那么Thursday从6递增,为7,以此类推。

其实枚举里面的成员只能是int类型,相当于int Monday = 1;只是把int省略掉了。

上一篇 下一篇

猜你喜欢

热点阅读