您当前的位置: 首页 > 

ZhangJiQun&MXP

暂无认证

  • 1浏览

    0关注

    1187博文

    0收益

  • 0浏览

    0点赞

    0打赏

    0留言

私信
关注
热门博文

枚举类型简单理解

ZhangJiQun&MXP 发布时间:2019-07-23 16:08:16 ,浏览量:1

枚举

  枚举类型声明为一组相关的符号常数定义了一个类型名称。枚举用于“多项选择”场合,就是程序运行时从编译时已经设定的固定数目的“选择”中做出决定。

  枚举类型(也称为枚举)为定义一组可以赋给变量的命名整数常量提供了一种有效的方法。例如,假设您必须定义一个变量,该变量的值表示一周中的一天。该变量只能存储七个有意义的值。若要定义这些值,可以使用枚举类型。枚举类型是使用 enum 关键字声明的。 

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

 默认情况下,枚举中每个元素的基础类型是 int。可以使用冒号指定另一种整数值类型。   如果不为枚举数列表中的元素指定值,则它们的值将以 1 为增量自动递增。在前面的示例中,Days.Sunday 的值为 0,Days.Monday 的值为 1,依此类推。创建新的 Days 对象时,如果不显式为其赋值,则它将具有默认值 Days.Sunday (0)。创建枚举时,应选择最合理的默认值并赋给它一个零值。这便使得只要在创建枚举时未为其显式赋值,则所创建的全部枚举都将具有该默认值。枚举中大小写敏感,但是建议不要这样。

  注意:System.Enum 类型是所有枚举类型的抽象基类(它是一种与枚举类型的基础类型不同的独特类型),并且从 System.Enum 继承的成员在任何枚举类型中都可用。存在从任何枚举类型到System.Enum 的装箱转换,并且存在从 System.Enum 到任何枚举类型的取消装箱转换。System.Enum 本身不是枚举类型。相反,它是一个类类型,所有枚举类型都是从它派生的。类型 System.Enum 从类型 System.ValueType派生,而后者又从类型 object 派生。在运行时,类型 System.Enum 的值可以是 null 或是对任何枚举类型的装了箱的值的引用。

枚举的优点:1、枚举可以使代码更易于维护,有助于确保给变量指定合法的、期望的值。 2、枚举使代码更清晰,允许用描述性的名称表示整数值,而不是用含义模糊的数来表示。 3、枚举使代码更易于键入。在给枚举类型的实例赋值时,VS.NET IDE会通过IntelliSense弹出一个包含可接受值的列表框,减少了按键次数,并能够让我们回忆起可能的值

如果枚举没有初始化, 即省掉"=整型常数"时, 则从第一个标识符开始。

例如,下面的代码定义了一个颜色枚举,变量 c 的类型为 color。最后,c 被赋值为 "blue"。

enum color { red, green, blue } c;
c = blue;

默认情况下,第一个名称的值为 0,第二个名称的值为 1,第三个名称的值为 2,以此类推。但是,您也可以给名称赋予一个特殊的值,只需要添加一个初始值即可。例如,在下面的枚举中,green 的值为 5。

enum color { red, green=5, blue };

在这里,blue 的值为 6,因为默认情况下,每个名称都会比它前面一个名称大 1,但 red 的值依然为 0。

 

 

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

其实就是类似数组,但是比数组功能更全一些,一一对应。

上面的代码就是定义了一个枚举类型的变量。enum 是枚举类型的关键字。枚举是一个很有意思的东西,weekday是一个变量,而且取值范围就是{}内的值,{}内的值是常量表示weekday的可能去到的值,称作枚举元素。枚举元素默认是从零开始,逐个递增的,上面代码中,我给初始设置了mon=1,这样就不是从零开始了,而是从1开始向后递增。 枚举类型的使用意义是方便程序员记忆,也就是说在我们的开发过程中,我们定义了很多的常量,比如1、2、3、4、5、6、7分别代表一周的7天。这样看着很方便啊,很好。但是,开发没有一天两天就能完事的,比如一个项目开发周期是3个月,谁能保证不会忘记数字对应的天?当然有人会说不可能,1-7对应1-7,怎么会忘记。那么我们换一个例子,在开发中,我用1表示红色,2表示蓝色,3表示黄色,那么3个月后保证还能记得清楚?这个时候枚举的好处就出来了。我不用去记对应关系,只要提前写一个枚举类型的变量然后我们就可以在以后的开发中使用red,blue,yellow,这样的单词带取值,这样没几个人会忘记吧。那么我们就来写一个这样的枚举:

enum color{red=1,blue,yellow};

但是枚举类型也不要滥用,因为它是一个单独的数据类型,因此不能像数组那样操作,而且要经常用到数据转换,操作起来不方便。所以在实际开发中比较少用。

虽然枚举有着这个缺点,但是它对于代码的记忆和可读性的帮助还是很大的。所以何时使用,怎么使用还需要程序员自己去理解。

而对于枚举类型的使用也很简单:

int main(int argc, const char * argv[]) {

    enum color{red=1,blue,yellow};

    int k;

    scanf("%d", &k);

    int col = (enum color)k;

    switch (col) {

        case red:

            printf("红色\n");

            break;

            

        case blue:

            printf("蓝色\n");

            break;

            

        case yellow:

            printf("黄色\n");

            break;

            

        default:

            break;

    }

    return 0;

}

关注
打赏
1665659684
查看更多评论
立即登录/注册

微信扫码登录

0.0418s