版权声明:本文为博主原创文章,未经博主允许不得转载。 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’
--只是个人笔记,若不是您想找的内容还请见谅!