English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

C++ 枚举(enum)

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

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

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

在这里,枚举的名称是season。

而且,spring,summer和winter是season类型的值。

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

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

枚举类型声明

创建枚举类型时,只会创建该变量的蓝图。这是创建枚举类型变量的方法。

enum boolean { false, true };
// 内部函数
enum boolean check;

在这里,创建了enum boolean类型的变量check。

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

enum boolean 
{ 
   false, true
} check;

示例1:枚举类型

#include <iostream>
using namespace std;
enum week { 周日, 周一, 周二, 周三, 周四, 周五, 周六 };
int main()
{
    week today;
    today = 周二;
    cout << "星期几?" << today+1;
    return 0;
}

Resultado de la salida

星期几?3

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

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

Resultado de la salida

Summer = 4

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

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

#include <iostream>
using namespace std;
enum suit {
    club = 0,
    diamonds = 10,
    hearts = 20,
    spades = 3
} card;
int main() 
{
    card = club;
    cout << "enum变量的大小 " << sizeof(card) << " bytes.";   
    return 0;
}

Resultado de la salida

enum变量的大小 4 bytes.

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

这使得enum成为使用标志的一个很好的选择。

您可以使用C ++结构完成相同的任务。但是,使用枚举可以提高效率和灵活性。

如何将枚举用于标志?

让我们举一个例子,

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

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

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

// In binary
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;
}

Resultado de la salida

5

Cuando la salida es5cuando, siempre sabes que se usarán negrita (bold) y subrayado (underline).

Además, puedes agregar marcas en las solicitudes.

if (myDesign & ITALICS) {
    // código cursivo
}

Aquí, hemos agregado cursiva en el diseño. Nota, solo el código cursivo escritoen la sentencia if.

No es necesario usar enumeraciones para usar C ++En la programación, se pueden completar prácticamente todas las tareas. Sin embargo, pueden ser muy útiles en ciertos casos. Esto también puede ser la diferencia entre un excelente programador y uno aún mejor.