zoukankan      html  css  js  c++  java
  • C语言中为什么要使用enum

    转载请注明出处,否则将追究法律责任http://blog.csdn.net/xingjiarong/article/details/47275971

    在C语言中有一个关键字是enum,枚举类型,不知道大家平时用吗,可是enum关键字在有些时候是很方面的,以下说一下使用enum关键字的几种情况。

    一、一次定义多个常量。

    比方说我们的程序中处理问题时与星期几有关,可能要将星期一转换为数字1,星期二转换为数字2。一直到数字7。在不用enum关键字的情况下,能够使用define来定义。可是大家会认为很麻烦,由于你要一个一个的定义。星期的还好说,仅仅有7天,假设是月份呢,一年有12个月份。那就要写12个define。很的不方面,假设利用enum的话就会很的方便。

    #include<stdio.h>
    
    enum week {Mon=1,Tue,Wed,Thu,Fri,Sat,Sun};
    
    int main()
    {
        printf("%d",Tue);
        return 0;
    }
    
    

    这样定义以后,Mon的值为1,Tue的值为2。Wed的值为3,一次类推。
    然后就能够像使用define之后的常量一样的使用定义的7个值了。

    假设开头不写Mon=1的话。Mon的默认值为0。然后从0開始增长。比如:

    enum color {red,blue,green,yellow};

    假设这样定义的话,red的值为0,blue的值为1,然后一次增长。

    假设从中间開始赋值的话:

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

    那么red到blue是依照默认的从0開始增长的,green就是定义的值5,然后green之后的值都是从5開始增长的。

    当然你也能够为每一个枚举的变量都赋值。这样就和全都用define定义是一样的了,假设枚举中有某个值没有被赋值,那么它将是从前一个赋值的变
    量開始,一次添加1.

    二、限定变量的范围

    比方我们的应用程序中要处理有关月份的东西,显然月份仅仅能取1-12中的某个数字。为了保证程序的正确性和健壮性。我们应该使用enum。

    #include<stdio.h>
    
    enum Month {Jan=1,Feb,Mar,Apr,May,Jun,Jul,Aug,Sep,Oct,Nov,dec};
    
    int main()
    {
        enum Month a =  Feb;
        printf("%d",a);
        return 0;
    }
    
    

    比方像这样,定义的枚举类型 a 的取值仅仅能是那12个变量中的一个,假设赋予了其它的变量,编译器就会报错。

    使用enum能够有一下几种方法:

    1、在定义enum的同一时候。声明变量:

    enum Month {Jan=1,Feb,Mar,Apr,May,Jun,Jul,Aug,Sep,Oct,Nov,dec} a,b;

    这样就声明了两个枚举类型a和b

    2、定义完enum之后再声明变量:

    enum Month {Jan=1,Feb,Mar,Apr,May,Jun,Jul,Aug,Sep,Oct,Nov,dec};
    enum Month a =  Feb;

    3、定义匿名的枚举变量

    enum  {Jan=1,Feb,Mar,Apr,May,Jun,Jul,Aug,Sep,Oct,Nov,dec} a;

    这种话,仅仅能使用a这一个枚举类型的变量,不能再定义其它的枚举类型。

  • 相关阅读:
    遇到shell重定向的一个奇怪问题:'消失'的标准输入!
    步步深入:MySQL架构总览->查询执行流程->SQL解析顺序
    [来自妹纸的挑战]-展开/还原多层链表
    【Shell】Linux 一行 多命令
    【Shell】通配符与特殊符号
    【Shell】变量的取用、删除、取代与替换
    【LeetCode】Find Minimum in Rotated Sorted Array 在旋转数组中找最小数
    【LeetCode】Maximum Product Subarray 求连续子数组使其乘积最大
    【LeetCode】Reverse Words in a String 反转字符串中的单词
    【面试题】比给定数大的最小数
  • 原文地址:https://www.cnblogs.com/liguangsunls/p/7211383.html
Copyright © 2011-2022 走看看