C++枚举(enum)

news2024/9/23 11:15:18

        在本文中,您将学习使用枚举(enum)。此外,您还将学习C ++编程中通常使用枚举的地方。枚举是用户定义的数据类型,由整数常量组成。可以使用关键字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;

在这里,创建了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;
}

输出结果: 

示例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;
}

输出结果: 

为什么在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;
}

输出结果: 

        这是因为整数的大小为4个字节。这使得enum成为使用标志的一个很好的选择。您可以使用C ++结构完成相同的任务。但是,使用枚举可以提高效率和灵活性。

如何将枚举用于标志?

让我们举个实例,

示例

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

假设您正在为Windows应用程序设计一个按钮。可以设置标志 ITALICS,BOLD和UNDERLINE 来处理文本。在上面的伪代码中,所有的积分常数都是2的幂是有原因的。

在上面的伪代码中,所有的积分常数都是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;
}

输出结果为:5

        当输出为5时,您始终知道会使用粗体(bold) 和 (underline) 下划线。另外,您可以在要求中添加标志。

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

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

您无需使用枚举就可以在C ++编程中完成几乎所有任务。但是,它们在某些情况下可能非常方便。这也或许是优秀程序员与更优秀程序员的不同之处。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1075308.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

k8s简单部署nginx

文章目录 1. 前言2. 部署nginx2.1. **创建一个nginx的Deployment**2.2. **创建一个nginx的service** 3. 总结 1. 前言 前文提要&#xff1a; kubeadm简单搭建k8s集群第三方面板部署k8s 上篇文章我们简单部署了k8s的集群环境&#xff0c;相比一定迫不及待的想部署一个实际应用了…

底部Taber的抽取

1.会抽取一个布局样式 2.布局样式里面抽取一个底部样式 这个是layout的代码 <template><view class"layout-wrapper"><view class"layout-content"><slot></slot></view><!-- 底部 --><Tabbar :activeInde…

基于Java+SpringBoot+Vue宠物领养系统的设计与实现 前后端分离【Java毕业设计·文档报告·代码讲解·安装调试】

&#x1f34a;作者&#xff1a;计算机编程-吉哥 &#x1f34a;简介&#xff1a;专业从事JavaWeb程序开发&#xff0c;微信小程序开发&#xff0c;定制化项目、 源码、代码讲解、文档撰写、ppt制作。做自己喜欢的事&#xff0c;生活就是快乐的。 &#x1f34a;心愿&#xff1a;点…

JVM源码剖析之线程的创建过程

说在前面&#xff1a; 对于Java线程的创建这个话题&#xff0c;似乎已经被"八股文"带偏&#xff5e; 大部分Java程序员从"八股文"得知创建Java线程有N种方式&#xff0c;比如new Thread、new Runnable、Callable、线程池等等&#xff5e; 而笔者写下这篇文…

Qemu系统模拟:1 简介

目录 1 后端/加速器2 特性简介3 运行 1 后端/加速器 系统模拟主要用于在host设备上运行guest OSQEMU支持多种hypervisors,同时也支持JIT模拟方案&#xff08;TCG&#xff09; 例如从上表我们可以看出&#xff0c;运行在x86硬件上的Linux系统支持KVM,Xen,TCG 2 特性简介 提供…

大数据集群(Hadoop生态)安装部署

目录 1. 简介 2. 前置要求 3. Hadoop集群角色 4. 角色和节点分配 5. 调整虚拟机内存 6. Zookeeper集群部署 7. Hadoop集群部署 7.1 下载Hadoop安装包、解压、配置软链接 7.2 修改配置文件&#xff1a;hadoop-env.sh 7.3 修改配置文件&#xff1a;core-site…

自动化机器人的开发框架

自动化领域有多个开源的框架和工具&#xff0c;用于自动化各种任务和流程。以下是一些常见的自动化开源框架和工具&#xff0c;以及它们的特点&#xff0c;希望对大家有所帮助。北京木奇移动技术有限公司&#xff0c;专业的软件外包开发公司&#xff0c;欢迎交流合作。 1.Robot…

【Java】Java中BigDecimal解决精度丢失问题

文章目录 1.我们先看一个例子2.BigDecimal中的一些方法3.值得注意的是如果要想无精度丢失的情况下计算结果&#xff0c;那么需要把double,float类型的参数转化为String类型的。并且使用BigDecimal(String)这个构造方法进行构造。 去获取结果。不然还是没有效果。4.在一般开发过…

python curl2pyreqs 生成接口脚本

下载 curl2pyreqs 库 pip install curl2pyreqs -i https://pypi.tuna.tsinghua.edu.cn/simple 打开调试模式&#xff0c;在Network这里获取 接口的cURL 打开cmd窗口&#xff0c;输入curl2pyreqs&#xff0c;会自动生成接口代码 curl2pyreqs 执行接口脚本&#xff0c;返回响应…

Docker基础操作容器

启动容器有两种方式&#xff0c;一种是基于镜像新建一个容器并启动&#xff0c;另外一个是将在终止状态&#xff08;exited&#xff09;的容器重新启动。 因为 Docker 的容器实在太轻量级了&#xff0c;很多时候用户都是随时删除和新创建容器。 新建并启动 所需要的命令主要…

火爆全网的头戴式耳机,Y2K辣妹时髦单品——Umelody轻律 U1头戴式耳机!

近些年&#xff0c;“复古”这阵风在时尚圈是越刮越猛。Y2K穿搭风更是火爆&#xff0c;最近火爆的Umelody轻律 U1头戴式耳机&#xff0c;可以说是通过单品来就能掌握其中的精髓&#xff0c;在众多博主和达人的穿搭中轮番上阵&#xff0c;无论是挂脖还是佩戴都特别好看&#xff…

STM32单片机入门学习(五)-按钮控制LED

按钮和LED接线 LED负极接B12,正极接VCC 按钮一端接B13,一端接GND&#xff0c;按下为低电平&#xff0c;松开为高电平 如图&#xff1a; 主程序代码&#xff1a;main.c #include "stm32f10x.h" #include "Delay.h" //delay函数所在头文件 #include …

基于Springboot实现影视影院订票选座管理系统【项目源码+论文说明】

基于Springboot实现影视影院订票选座管理系统演示 摘要 本论文主要论述了如何使用JAVA语言开发一个影城管理系统 &#xff0c;本系统将严格按照软件开发流程进行各个阶段的工作&#xff0c;采用B/S架构&#xff0c;面向对象编程思想进行项目开发。在引言中&#xff0c;作者将论…

域信息收集

DMZ&#xff0c;是英文“demilitarized zone”的缩写&#xff0c;中文名称为“隔离区”&#xff0c;也称“非军事化区”。它是为了解决安装防火墙后外部网络的访问用户不能访问内部网络服务器的问题&#xff0c;而设立的一个非安全系统与安全系统之间的缓冲区。该缓冲区位于企业…

Git Pull failure 【add/commit】

操作页面 操作步骤 1. 打开项目所在 在.git目录下右击打开Git Bssh Here 2. git add . 3. git commit -m "提交" 4. 成功提交到本地, 这下就可以拉取代码了

选择适合您的项目管理软件:哪个更好?

对于项目管理而言&#xff0c;一个优秀的项目管理工具可以达到事半功倍的效果。Zoho Projects 是一款功能强大&#xff0c;适用于各行业的标准化项目管理工具&#xff0c;具备适用度高的特点&#xff0c;丰富的功能模块可以匹配各行各业的项目管理。 一&#xff0c;任务管理 通…

JUC第十八讲:JUC集合-BlockingQueue 详解

JUC集合-BlockingQueue 详解 JUC里的 BlockingQueue 接口表示一个线程安全放入和提取实例的队列。本文是JUC第十八讲&#xff0c;将给你演示如何使用这个 BlockingQueue&#xff0c;不会讨论如何在 Java 中实现一个你自己的 BlockingQueue。 文章目录 JUC集合-BlockingQueue 详…

Linux是什么,有哪些特点?Linux和UNIX的关系及区别(详解版)

与大家熟知的 Windows 操作系统软件一样&#xff0c;Linux 也是一个操作系统软件&#xff0c;其 logo 是一只企鹅&#xff08;如图 1 所示&#xff09;。与 Windows 不同之处在于&#xff0c;Linux 是一套开放源代码程序的、可以自由传播的类 Unix 操作系统软件。 图 1 Linux 操…

Atcoder Regular Contest 166

只打了半场。 A. Replace C or Swap AB 首先如果存在某个 \(i\)&#xff0c;使得 \(Y_i\) 是 C 且 \(X_i\) 不是&#xff0c;那么显然是不合法的&#xff0c;可以直接判掉。 那么除去上述情况 \(Y\) 中为字符 C 的位置 \(X\) 也只能是 C。它们把字符串分成了若干段&#xff0c;…

LVGL_基础控件timer

LVGL_基础控件timer 1、创建基础控件定时器 /* 下面创建三个timer&#xff0c;最后创建的timer会被放在timer list的最前面&#xff0c; lvgl的任务处理器会从timer list从头到尾按顺序遍历检查&#xff0c;执行满足执行条件的timer。 因此&#xff0c;如果三个定时器的周期设…