zoukankan      html  css  js  c++  java
  • 枚举类型、联合类型

    1联合union

      联合 (union) 是一个能在同一个存储空间里(但不同时)存储不同类型数据的数据类型。

      编译器为联合分配足够的空间保存所描述的可能性的最大需要。

      下面是一个带有标记的联合模板例子:

        union hold{    //带有标记的联合的模板 

          int digit; 

          double bigf1; 

          char letter; 

        };

      下面是定义3个 hold 类型联合变量的例子 

        union hold fit;      //hold类型的联合变量 

        union hold save[10];  //10个联合变量的数组 

        union hold *pu;      //指向hold类型变量的指针

      初始化联合:

        union hold valA; 

        valA.letter = 'R'; 

        union hold valB = valA;  //把一个联合初始化为另一个联合 

        union hold valc = {88};   //初始化联合的 digit 成员

        union hold valD = {.bigf1 = 118.2}; //指定初始化项目

      联合的使用方法:即使有足够的空间,也不能同时保存2个值

        fit.digit = 23; //把 23 存储在 fit 中,使用 4 个字节 

        fit.bigf1 = 2.0; //清除 23,存储2.0,使用 8 个字节

        fit.letter = 'h'; //清除 2.0,存储 'h',使用1个字节

    2枚举enum 

    枚举值属于构造类型

    enum 枚举名 {枚举值表};
    例:
    enum WeekDay
    {
        Monday = 1
    ,
        TuesDay,
        WednesDay,
        TursDay,
        FriDay,
        SaturDay,
        SunDay
    };

    枚举是指将变量的值一一列出来,变量的值只限于列举出来的值的范围内。它用于声明一组命名的常数,当一个变量有几种可能的取值时,可以将它定义为枚举类型。

     
    在枚举类型中声明的第一个枚举成员它的默值为0。以后的枚举成员值是将前一个枚举成员(按照文本顺序)的值加 1 得到的。这样增加后的值必须在该基础类型可表示的值的范围内;否则,会出现编译时错误。
     

    1.在C编译系统中,枚举值是常量,不是变量,只有在定义时才能对其赋值,不能在程序中再使用赋值语句对他们赋值。

    2.枚举值是常量,它们是有值的,按定义的顺序使它们的值为 0, 1, 2… 。

     上面定义的枚举类型 WeekDay 中,MonDay 的值为 0 ,TuesDay 的值为1 … ,这些都是系统自动赋给的。如果定义时赋值 MonDay=2 ,那么输出day的时候 day=4;如果定义时赋值 MonDay=2,同时赋值 FriDay=3 时,输出 day 的值还是 day=4 。

    3.枚举值可以比较,枚举值的比较是按其定义时的值进行比较的。
     if (SunDay]]]]>Monday)             //枚举值可以进行比较
        {
            printf("day = %d ",day);
            printf("day2 = %d ",day2);
        }

    4.给枚举变量赋值时不能直接赋整数,因为它们属于不同的数据类型,应先强制类型转换才能赋值。

    例:enum WeekDay day2;
        
        day2=(enum WeekDay)4;

     

  • 相关阅读:
    hdu 4710 Balls Rearrangement()
    hdu 4707 Pet(DFS水过)
    hdu 4706 Children's Day(模拟)
    hdu 4712 Hamming Distance(随机函数暴力)
    csu 1305 Substring (后缀数组)
    csu 1306 Manor(优先队列)
    csu 1312 榜单(模拟题)
    csu 1303 Decimal (数论题)
    网络爬虫
    Python处理微信利器——itchat
  • 原文地址:https://www.cnblogs.com/Alling/p/3971101.html
Copyright © 2011-2022 走看看