# C++ 中的枚举

> 原文： [https://beginnersbook.com/2017/09/cpp-enumeration/](https://beginnersbook.com/2017/09/cpp-enumeration/)

枚举是用户定义的数据类型，我们为变量指定一组值，变量只能从一小组可能的值中取出一个。我们使用`enum`关键字来定义枚举。

```cpp
enum direction {East, West, North, South}dir;
```

这里枚举名称是只能取四个方向之一的指定值，声明末尾的`dir`是枚举变量。

让我们举一个简单的例子来理解这一点：

这里我已经将值`West`分配给枚举变量`dir`，当我显示`dir`的值时，它显示 1。这是因为默认情况下值从 0 开始递增，意思是东是 0，西是 1，北是 2，南是 3。

## 简单的枚举示例

```cpp
#include<iostream>
using namespace std;
enum direction {East, West, North, South}dir;
int main()
{
   dir = West;
   cout<<dir;
   return 0;
}
```

## 另一种声明枚举变量的方法

正如我们在上面的例子中看到的，我在枚举声明中声明了枚举变量`dir`，还有另一种声明枚举变量的方法。

```cpp
#include <iostream>
using namespace std;
enum direction {East, West, North, South};
int main(){
   direction dir;
   dir = South; 
   cout<<dir;   
   return 0;
}
```

输出：

```cpp
3
```

## 为什么在 C++ 中使用`enum`

既然我们已经理解了什么是枚举以及如何在程序中使用它们，那么让我们讨论一下我们使用它们的原因：

只有在我们期望变量具有一组可能的值时才使用枚举，例如，我们有一个保存方向的`dir`变量。由于我们有四个方向，这个变量可以取四个值中的任何一个，如果我们尝试为这个变量赋另一个随机值，它将抛出一个编译错误。这会增加编译时检查并避免通过传入无效常量而发生的错误。

经常使用它们的另一个重要位置是[`switch-case`语句](https://beginnersbook.com/2017/08/cpp-switch-case/)，其中`case`块期望的所有值都可以在枚举中定义。这样我们就可以确保我们在`switch`括号中传递的`enum`变量没有采用它不应该接受的任何随机值。

## 如何更改`enum`的默认值

```cpp
#include <iostream>
using namespace std;
enum direction {East=11, West=22, North=33, South=44};
int main(){
   direction dir;
   dir = South;
   cout<<dir; 
   return 0;
}
```

**输出：**

```cpp
44
```