C++之枚举

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/Davincdada/article/details/78767156
--C++的枚举是真正的枚举。

首先,先理清楚什么是枚举?
百科中这么解释:
枚举在C/C++/c#中,是一个被命名整型常数集合, 枚举在日常生活中很常见。

  • 在实际应用中,有的变量只有几种可能取值。如人的性别只有两种可能取值,星期只有七种可能取值。在 C / C++中对这样取值比较特殊的变量可以定义为枚举类型。
  • 所谓枚举是指将变量的值一一列举出来,变量只限于列举出来的值的范围内取值。
  • 定义一个变量是枚举类型,可以先定义一个枚举类型名,然后再说明这个变量是该枚举类型。
#include <iostream>
using namespace std;

int main()
{
 //枚举类型名weekday;{}内为枚举常量;定义了枚举变量a,b,c;
    enum weekday{ sun,mon,tue,thu,fri,sat }a,b,c;

    a=sun; //对枚举变量的赋值范围只能是枚举中所列举的
    b=mon; //而C语言可以是与char、有符号或无符号整型兼容的常数
    c=tue;

    printf( "a=%d\nb=%d\nc=%d\n", a,b,c );
}

需要说明的有以下几点:

  • 枚举元素不是变量,而是常数,因此枚举元素又称为枚举常量。因为是常量,所以不能对枚举元素进行赋值。
  • 枚举元素作为常量,它们是有值的,编译时编译器会按定义的顺序使它们的值为0,1 ,2…

在上面的说明中,sun 的值为 0,mon 的值为 1,…sat 的值为 6;
编译、运行上述例子,结果为

a=0
b=1
c=2
  • 一个整数不能直接赋给一个枚举变量,必须强制进行类型转换才能赋值
//将顺序号为 2 的枚举元素赋给 day,相当于day=tue; 
day = (enum weekday) 2 ;

实例

# include <iostream>
using namespace std;

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

int main( )
{
    int k;

    cout<<"input a number(0--6)"<<endl;
    cin>>k;

    day=(enum weekday)k;
    switch(day)
    {
        case sun: printf("sunday");break;
        case mon: printf("monday");break;
        case tue: printf("tuesday");break;
        case wed: printf("wednesday\n");break;
        case thu: printf("thursday\n");break;
        case fri: printf("friday\n");break;
        case sat: printf("satday\n");break;
        default: printf("input error\n");break;
    }
}
//printf也可以用在C++中,但没有cout灵活;
//<<endl 相当于换行符 ‘\n’
--只是个人笔记,若不是您想找的内容还请见谅!

猜你喜欢

转载自blog.csdn.net/Davincdada/article/details/78767156