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;

     

  • 相关阅读:
    Linux常用命令--清屏
    [LeetCode]Remove Duplicates from Sorted Array
    [LeetCode]Combinations
    [LeetCode]Search in Rotated Sorted Array II
    [LeetCode]Binary Tree Level Order Traversal II
    [LeetCode]Binary Tree Level Order Traversal
    [LeetCode]H-Index II
    [LeetCode]H-Index
    [LeetCode]Symmetric Tree
    [LeetCode]Remove Element
  • 原文地址:https://www.cnblogs.com/Alling/p/3971101.html
Copyright © 2011-2022 走看看