📜  C++枚举

📅  最后修改于: 2020-09-25 04:51:25             🧑  作者: Mango

在本文中,您将学习使用枚举(enum)。另外,您还将学习C++编程中通常使用枚举的地方。

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

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

在这里,枚举的名称是season

并且, springsummerwinter是type season值。

默认情况下, 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;

示例1:枚举类型

#include 
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 
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 
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 {

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

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

// In binary

ITALICS = 00000001
BOLD = 00000010
UNDERLINE = 00000100 

由于积分常数是2的幂,因此您可以一次组合两个或多个标志而不会使用按位OR |重叠 运算符。这使您可以一次选择两个或多个标志。例如,

#include 
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) {
    // code for italics
}

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

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