C++中枚举
时间: 2023-09-05 09:10:45 浏览: 76
在 C++ 中,枚举(enum)是一种用户自定义类型,用于定义一组有限的命名常量。枚举类型可以让程序更加易读易懂,避免使用魔法数字,提高代码的可维护性。
枚举类型的定义格式为:
```
enum enum_name {
enumerator1,
enumerator2,
...
};
```
其中,enum_name 是枚举类型的名称,enumerator1、enumerator2 等是枚举值(常量),它们用逗号分隔,最后一个枚举值后面没有逗号。
枚举值可以显式地指定一个整数值,也可以让编译器自动分配值。如果没有指定值,那么第一个枚举值默认为0,后面的枚举值依次递增1。如果指定了某个枚举值的值,那么后面的枚举值会在该值的基础上递增1。
枚举类型的变量可以像普通变量一样使用,并且只能取枚举类型中定义的值。例如:
```
enum Weekday {
Monday,
Tuesday,
Wednesday,
Thursday,
Friday,
Saturday,
Sunday
};
Weekday today = Thursday;
if (today == Friday) {
cout << "TGIF!" << endl;
} else {
cout << "It's not Friday yet." << endl;
}
```
上面的代码定义了一个 Weekday 枚举类型,包含七个枚举值。然后定义了一个 today 变量,它的值为 Thursday。在 if 语句中,使用 today == Friday 判断今天是不是周五。由于 today 的值为 Thursday,所以不满足条件,输出 It's not Friday yet.。
枚举类型可以作为函数参数或返回值,例如:
```
enum Color {
Red,
Green,
Blue
};
Color mix(Color c1, Color c2) {
if (c1 == Red && c2 == Blue || c1 == Blue && c2 == Red) {
return Purple;
} else if (c1 == Red && c2 == Green || c1 == Green && c2 == Red) {
return Yellow;
} else if (c1 == Blue && c2 == Green || c1 == Green && c2 == Blue) {
return Cyan;
} else {
return Black;
}
}
```
上面的代码定义了一个 Color 枚举类型,包含三个枚举值。然后定义了一个 mix 函数,它接受两个 Color 类型的参数 c1 和 c2,返回一个新的 Color 类型的值。根据 c1 和 c2 的值不同,返回不同的颜色。
相关推荐
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)