C/C++中枚举类型enum使用

Posted 无鞋童鞋

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C/C++中枚举类型enum使用相关的知识,希望对你有一定的参考价值。

1. 说明:

  枚举enum的出现,主要是为了解决一些特定属性的赋值,变量取值仅在一定有限范围内的问题。例如一年只有十二个月取值,一个星期只有七天情况,人的性别只有男女两种等。这些属性如果简简单单用int类型变量定义就有失妥当,能取的值远远超出可取值范围。所以我们希望给这些属性变量,定义一个有限取值范围。
  枚举即将变量的值一一列举出来,变量只限于列举出来的值的范围内取值。

2. 定义

  语法结构:
  enum [枚举名] e1[=Value1], e2[=Value2] ,… …;

  e1、e2… …:称为枚举常量,枚举成员,也称为枚举子。
  Value1,Value2… …:称为枚举子值,即枚举值,可忽略不写,默认从0依次赋值。
  例如:

enum color red,green,blue; //枚举值分别为0,1,2.

  定义枚举类型变量:
  [enum] 枚举名 枚举变量名 [=初始化值];
  例如:

color paint = red;

enum color paint = red; 

  当然,也可以么直接定义枚举变量,像结构体struct一样:

enum color red=1 , green =5, blue=10 paint;

3. 枚举语法

  ①.枚举成员不是变量,而是常数,和const定义常变量一样,所以不能对枚举元素进行赋值。
  ②.枚举成员作为常量,定义的时候存储的值按列举顺序依次默认为0,1,2……。当然,声明时候可以修改其存储值,即修改枚举值,但不可以为负数,如-1,-2等,且枚举值为整数。
  例如:

enum color red, green=10,blue; //依次为0,10,11

  这种情况下,red枚举值依旧默认为0,green则为10,而blue没有赋值,则随上个枚举值递增下去,所以为11。
  枚举值在未特定赋值外,后续枚举成员默认都是依上个成员的枚举值依次递增的。  
  ③. 枚举成员不是简单字符串常量,使用的时候无需添加单、双引号。
  ④.枚举成员不可以重复,但是枚举值可以重复。重复枚举值的枚举成员表明它们具有共同性质,所以放在一起。
  例如:

enum weeks mon=1,tue=1,wed=1,thu=1,fri=1,sat=2,sun=2;

  一周周一到周五是工作日,我们希望它们具有共性和相同的枚举值。而周末休息,我们希望它两有另外一个枚举值。
  ⑤.一个整数不能直接赋给一个枚举变量,必须强制进行类型转换才能赋值。
  例如:

enum weeks day;
day =(weeks)2;

  ⑥.枚举值可以用在if-else或者switch-case判断中。
  例如:

if(day != mon)

    printf("今天是工作日\\n");

  ⑦.编译平台输出枚举类型变量,输出的不是枚举常量名称,而是枚举值。就像const int n=1输出的并不是’n’这个字符,而是1这个值。
  例如:

enum weeks day = mon; //定义枚举weeks类型变量并初始化
day = (weeks)2;  
cout<<day<<endl;      //输出结果为2,并不是"sat"字符串常量      

4. 枚举应用程序

当输入今天星期几(1-7),我们希望判断今天是否上班(公司规定周一到周五工作,周末休息)。

#include<stdio.h> 

int main( ) 
 

    enum weekday sun=1,mon,tue,wed,thu,fri,sat day; //从1开始
    int k; 
    printf("请输入今天星期几(1--7):"); 
    scanf("%d",&k); 
    day=(enum weekday)k; 
    switch(day) 
            
        case mon:  
        case tue:
        case wed:  
        case thu:  
        case fri:       printf("今天上班\\n"); break; 

        case sun:
        case sat:       printf("今天休息\\n"); break; 

        default:        printf("输入有误\\n"); break; 
     
    return 0;

个人学习记录,由于能力和时间有限,如果有错误望读者纠正,谢谢!

转载请注明出处:CSDN 无鞋童鞋。

以上是关于C/C++中枚举类型enum使用的主要内容,如果未能解决你的问题,请参考以下文章

C语言中如何控制枚举类型占用空间的大小

.net 枚举(Enum)使用总结

枚举类型

Enum(枚举类型)的基本应用

[enum]enum的用法

c语言枚举类型enum用法