枚举类型enum

Posted wzfs

tags:

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

枚举类型enum:

1、为什要用枚举类型?
如果变量中需要几种可能存在的值,那么就可以定义为枚举类型,就是将变量或对象可能存在的值一一列举出来。此外,对一些只有有限的几种可能值的数据对其合法性的检查也十分方便。

2、枚举类型声明形式:enum 枚举类型名 变量值列表;

列如 enum Weekdaysunday,monday,tuesday,wednesday,thursday,friday,saturday;

它具有默认值从0开始依次为0、1、2……其中对于枚举元素按常量处理对其进行赋值是错误的,列如定义“sunday=0;”是非法的。若想定义sunday不从0定义,便可在声明类型时直接定义,但后面未定义的变量的值将以前面最近的变量定义的数为参考依次往后。列如

enum Weekday sunday=7,monday,tuesday,wednesday,thursday,friday,saturday;

上述枚举中monday的值为8。

3、强制类型转换:因为枚举相当于是整数的子集,因此整数值不能直接赋值给枚举变量,需进行强制转换;此外该赋值的整数在枚举定义范围内应存在才能转换成功。

以下是错误代码:

```
enum WeekdaySun,Mon,Tue,Wed,Thu,Fri,Sat;
Weekday day1,day2;
day2=1;  未进行强制转换

```

正确代码:

(int型转换成枚举型)

```
Weekday day1,day2;
int a=1;
day2=(Weekday)a;   进行强制转换

```

(不从0开始定义)

```
enum WeekdaySun=7,Mon=1,Tue,Wed,Thu,Fri,Sat;
```

(枚举型转换成int型)

 ```
 Weekday day1=Weekday.Mon;
 int a=day1;

 ```

以下为枚举强制类型转换式列的运行过程

技术图片
技术图片

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

c语言中,啥是枚举类型(enum),给个例子?

enum枚举类型怎么可以转换成整型呢 ,可以转换成其它类型吗,难道枚举类型的基类是数值类型吗?

枚举类型 typedef enum....; enum....; 这两个的区别

枚举类型enum

java枚举类型enum用法

C#如何将枚举类(enum)型转换成字符(string)类型