# C++ 枚举

> 原文： [https://www.programiz.com/cpp-programming/enumeration](https://www.programiz.com/cpp-programming/enumeration)

#### 在本文中，您将学习使用枚举（`enum`）。 此外，您还将学习 C++ 编程中通常使用枚举的地方。

枚举是用户定义的数据类型，由整数常量组成。 要定义枚举，使用关键字`enum`。

```cpp
enum season { spring, summer, autumn, winter };
```

在此，枚举的名称是`season`。

并且，`spring`，`summer`和`winter`是`season`类型的值。

默认情况下，`spring`为 0，`summer`为 1，依此类推。 您可以在声明过程中更改枚举元素的默认值（如有必要）。

```cpp
enum season 
{   spring = 0, 
    summer = 4, 
    autumn = 8,
    winter = 12
};
```

* * *

## 枚举类型声明

创建枚举类型时，仅创建变量的蓝图。 这是创建枚举类型变量的方法。

```cpp
enum boolean { false, true };

// inside function
enum boolean check;
```

在此，创建类型为`enum boolean`的变量`check`。

这是使用不同语法声明相同`check`变量的另一种方法。

```cpp
enum boolean 
{ 
   false, true
} check;

```

* * *

### 示例 1：枚举类型

```cpp
#include <iostream>
using namespace std;

enum week { Sunday, Monday, Tuesday, Wednesday, Thursday, Friday, Saturday };

int main()
{
    week today;
    today = Wednesday;
    cout << "Day " << today+1;
    return 0;
}

```

**输出**

```cpp
Day 4
```

* * *

### 示例 2：更改枚举的默认值

```cpp
#include <iostream>
using namespace std;

enum seasons { spring = 34, summer = 4, autumn = 9, winter = 32};

int main() {

    seasons s;

    s = summer;
    cout << "Summer = " << s << endl;

    return 0;
}
```

**输出**

```cpp
Summer = 4
```

* * *

## 为什么在 C++ 编程中使用枚举？

枚举变量仅取许多可能值中的一个值。 示例来演示它，

```cpp
#include <iostream>
using namespace std;

enum suit {
    club = 0,
    diamonds = 10,
    hearts = 20,
    spades = 3
} card;

int main() 
{
    card = club;
    cout << "Size of enum variable " << sizeof(card) << " bytes.";   
    return 0;
}

```

**输出**

```cpp
Size of enum variable 4 bytes.
```

这是因为整数的大小为 4 个字节。

这使枚举成为使用标志的好选择。

您可以使用 [C++ 结构](/cpp-programming/structure "C structures")完成相同的任务。 但是，使用枚举可以提高效率和灵活性。

* * *

### 如何将枚举用于标志？

让我们举个例子，

```cpp
enum designFlags {
	ITALICS = 1,
	BOLD = 2,
	UNDERLINE = 4
} button; 
```

假设您正在设计 Windows 应用程序的按钮。 您可以将标记`ITALICS`，`BOLD`和`UNDERLINE`设置为文本。

上面的伪代码中所有积分常数都是 2 的幂是有原因的。

```cpp
// In binary

ITALICS = 00000001
BOLD = 00000010
UNDERLINE = 00000100 

```

由于积分常数是 2 的幂，因此您可以使用按位 OR `|`运算符。 这使您可以一次选择两个或多个标志。 例如，

```cpp
#include <iostream>
using namespace std;

enum designFlags {
    BOLD = 1,
    ITALICS = 2,
    UNDERLINE = 4
};

int main() 
{
    int myDesign = BOLD | UNDERLINE; 

        //    00000001
        //  | 00000100
        //  ___________
        //    00000101

    cout << myDesign;

    return 0;
} 
```

输出量

```cpp
5
```

当输出为 5 时，您始终知道会使用粗体和下划线。

另外，您可以在要求中添加标志。

```cpp
if (myDesign & ITALICS) {
    // code for italics
}
```

在这里，我们在设计中添加了斜体。 注意，仅在[`if`语句内](/cpp-programming/if-else "C++ if statement")编写斜体代码。

您可以在 C++ 编程中完成几乎任何事情而无需使用枚举。 但是，它们在某些情况下可能非常方便。 那就是优秀程序员与优秀程序员的不同之处。