跳到主要内容

C++ 枚举

提示
  1. 枚举基础:枚举(Enumeration)是由关键字enum定义的用户自定义数据类型,包含一组整数常量。例如,enum season { spring, summer, autumn, winter };中,默认spring为0,summer为1,以此类推。
  2. 修改枚举值:可以在声明枚举时更改其元素的默认值,例如:enum season { spring = 0, summer = 4, autumn = 8, winter = 12 };
  3. 枚举的应用:枚举变量只能取定义的那些值,使得代码更清晰、易于管理。此外,枚举在处理标志(如设计标志)时特别有用,因为可以使用位运算符来组合多个枚举值。

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

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

在此,枚举的名称为 season。

而 spring、summer、autumn 和 winter 是 season 类型的值。

默认情况下,spring 是 0,summer 是 1,以此类推。您可以在声明时更改枚举元素的默认值(如有必要)。

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

枚举类型声明

当您创建一个枚举类型时,仅创建了变量的蓝图。以下是创建枚举类型变量的方法。

enum boolean { false, true };

// 函数内部
enum boolean check;

此处,创建了一个名为 check 的 enum boolean 类型的变量。

以下是使用不同语法声明相同 check 变量的另一种方式。

enum boolean
{
false, true
} check;

示例 1:枚举类型

#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;
}

输出

Day 4

示例 2:更改枚举的默认值

#include <iostream>
using namespace std;

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

int main() {

seasons s;

s = summer;
cout << "夏季 = " << s << endl;

return 0;
}

输出

夏季 = 4

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

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

#include <iostream>
using namespace std;

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

int main()
{
card = club;
cout << "枚举变量的大小 " << sizeof(card) << " 字节。";
return 0;
}

输出

枚举变量的大小 4 字节。

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

这使得枚举成为与标志一起工作的好选择。

如何使用枚举进行标志?

让我们举个例子,

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

假设您正在为 Windows 应用程序设计一个按钮。您可以设置标志 ITALICS、BOLD 和 UNDERLINE 来处理文本。

以上伪代码中所有整型常量都是 2 的幂的原因在于。

// 二进制形式

ITALICS = 00000001
BOLD = 00000010
UNDERLINE = 00000100

由于整型常量是 2 的幂,因此您可以使用按位或运算符 | 同时组合两个或多个标志,而不会重叠。这允许您同时选择两个或多个标志。例如,

#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;
}

输出

5

当输出为 5 时,您总是知道使用了粗体和下划线。

此外,您可以根据需求添加标志。

if (myDesign & ITALICS) {
// 斜体代码
}

这里,我们已经将斜体添加到我们的设计中。请注意,只有在 if 语句 内部才编写了斜体代码。

您几乎可以在不使用枚举的情况下完成 C++ 编程中的任何任务。但是,在某些情况下它们可能非常方便。这就是区分优秀程序员和伟大程序员的原因。