C++ 枚举

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

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

这里,枚举的名称是 season

springsummerwinterseason 类型的值。

默认情况下,spring 为 0,summer 为 1,依此类推。您可以在声明期间更改枚举元素的默认值(如果需要)。

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

枚举类型声明

当您创建一个枚举类型时,只创建了一个变量的蓝图。下面是如何创建枚举类型的变量。

enum boolean { false, true };

// inside function
enum boolean check;

这里,创建了一个 `enum boolean` 类型的变量 check

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

enum boolean 
{ 
   false, true
} check;

示例:枚举类型

#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

示例:更改枚举的默认值

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

输出

Summer = 4

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

枚举变量只接受众多可能值中的一个值。让我们看一个例子。

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

输出

Size of enum variable 4 bytes.

这是因为整数的大小是 4 字节。这使得枚举成为处理标志的良好选择。

您可以使用 C++ 结构体 完成相同的任务。然而,使用枚举可以为您带来效率和灵活性。


如何使用枚举作为标志?

让我们看一个例子。

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

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

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

// In binary

ITALICS = 00000001
BOLD = 00000010
UNDERLINE = 00000100 

由于整型常量是 2 的幂,您可以使用 按位或 | 运算符 将两个或多个标志组合在一起,而不会发生重叠。这允许您一次选择两个或多个标志。例如:

#include <iostream>
using namespace std;

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

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

        //    00000010
        //  | 00000100
        //  ___________
        //    00000110

    cout << myDesign;

    return 0;
}

输出

6

当输出是 **6** 时,您总是知道使用了 BOLDUNDERLINE

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

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

在这里,我们在设计中添加了斜体。请注意,只有斜体的代码写在 if 语句 中。

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

你觉得这篇文章有帮助吗?

我们的高级学习平台,凭借十多年的经验和数千条反馈创建。

以前所未有的方式学习和提高您的编程技能。

试用 Programiz PRO
  • 交互式课程
  • 证书
  • AI 帮助
  • 2000+ 挑战