最新消息:XAMPP默认安装之后是很不安全的,我们只需要点击左方菜单的 "安全"选项,按照向导操作即可完成安全设置。

那些年C++ 结构篇:C++ 枚举

XAMPP相关 admin 140浏览 0评论

第二十八章:C++ 枚举

在此篇教程中,你将学习在C++编程中使用枚举(enum)类型。枚举类型(enumeration)是 C++ 中的一种派生数据类型,它是由用户定义的若干枚举常量的组成的集合

枚举是由整数常量组成的用户定义数据类型。要定义枚举类型,需使用关键字 enum 来进行定义,语法如下:

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

在这段代码中,枚举的名称是season,其中springsummerautumn和 winter都是枚举类型season的值。

默认情况下,spring0summer1,依此类推。你也可以在声明时,更改枚举元素的默认值,如下:

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 { 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 << "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 << "枚举变量的内存大小:" << sizeof(card) << " bytes.";   
    return 0;
}

输出:

枚举变量的内存大小:4 bytes.

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

dra00015

从例子可以看出,使用 enum 枚举类型可以成为处理标志的好方法。

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

 如何使用枚举作为标志?

让我们举个例子:

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

假设我们正在为 Windows Office Word应用程序设计一个按钮。你可以设置标志ITALICSBOLDUNDERLINE来分别处理文本格式的斜体粗体下划线

这里注意:上面代码中赋值的所有常数都是 2 的幂有以下原因:

// 二进制表达形式

ITALICS = 00000001
BOLD = 00000010
UNDERLINE = 00000100

由于枚举类参数设计常数是 2 的幂,因此可以使用按位或运算 [OR] (运算符为:| ) 一次组合两个多个标志而不会重叠标志。这就允许了用户可以一次选择两个多个标志。例如:

#include <iostream>
using namespace std;

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

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

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

    cout << myDesign;

    return 0;
}

输出:

5

当输出为dra000015时,则你使用了粗体[BOLD]和下划线[UNDERLINE]格式。

此外,你可以根据自己的要求添加标志。

if (myDesign & ITALICS) {

// 斜体自定义格式的代码
}

在这里,当myDesign与 ITALICS同时为1时,myDesign & ITALICS值为 1,即:当有斜体的标志时,则会执行if语句,为斜体自定义格式。

综上:你也可以在不使用枚举的情况下完成 C++ 编程中的几乎任何事情。但是,枚举 在某些情况下可能使用起来非常方便。使用简洁高效的代码是优秀程序员的基本素养。

 

 

 

 

程序算法实验室 zhangJA-Lab

转载请注明:XAMPP中文组官网 » 那些年C++ 结构篇:C++ 枚举

您必须 登录 才能发表评论!