学习一下C++中的枚举的定义
目录
普通枚举
强类型枚举
普通枚举
枚举类型在C++中是通过关键字enum来定义的。下面是一个简单的例子:
enum Color { RED, GREEN, BLUE
};
在这个例子中,我们定义了一个名为Color的枚举类型,它包含了三个枚举值:RED、GREEN和BLUE。默认情况下,第一个枚举值(在这个例子中是RED)的值为0,后续的枚举值会依次递增。所以,在这个例子中,RED的值为0,GREEN的值为1,BLUE的值为2。
当然,你也可以显式地为每个枚举值指定一个整数值:
enum Color { RED = 1, GREEN = 2, BLUE = 4
};
在这个修改后的例子中,RED的值为1,GREEN的值为2,BLUE的值为4。
你可以使用枚举类型来声明变量,并给这些变量赋值枚举值:
Color myColor = RED;
此外,你还可以使用枚举类型作为函数参数的类型,或者作为数组、结构或类的成员的类型。这都可以提高代码的可读性和可维护性。
注意:虽然枚举值在定义时是命名的整数值,但在使用时它们通常被视为它们的底层整数值。因此,你可以将枚举值赋给整数类型的变量,也可以将整数类型的值赋给枚举类型的变量(只要这个整数值在枚举值的范围内)。但是,这样做可能会降低代码的可读性和可维护性,所以应该尽量避免。
强类型枚举
在C++中,从C++11开始,你可以为枚举类型指定一个底层数据类型(underlying type),以控制枚举值的大小和范围。
#include <iostream> enum class Color : unsigned char { RED = 1, GREEN = 2, BLUE = 4
}; int main() { Color myColor = Color::RED; // 输出枚举值的底层整数表示 std::cout << "The value of RED is: " << static_cast<unsigned char>(myColor) << std::endl; // 尝试将一个大于底层类型范围的整数赋值给枚举变量(这会导致编译错误) // Color myOtherColor = Color(256); // 这将不会编译通过,因为256超出了unsigned char的范围 return 0;
}
在这个例子中,Color枚举类型被指定了一个底层数据类型unsigned char。这意味着枚举值RED、GREEN和BLUE将使用unsigned char类型来存储。如果尝试将一个超出unsigned char范围的值赋给Color类型的变量,编译器将会报错。
注意,在这个例子中我还使用了enum class而不是enum。enum class是C++11中引入的强类型枚举(strongly typed enumeration),它提供了更好的类型安全性和作用域控制。使用enum class时,枚举值需要使用枚举类型名和::作用域解析运算符来访问,例如Color::RED。而传统的enum(也称为非类型安全的枚举或旧式枚举)则没有这样的作用域限制,它们的枚举值将直接处于包含它们的命名空间中。
相关文章:
学习一下C++中的枚举的定义
目录 普通枚举 强类型枚举 普通枚举 枚举类型在C中是通过关键字enum来定义的。下面是一个简单的例子: enum Color { RED, GREEN, BLUE }; 在这个例子中,我们定义了一个名为Color的枚举类型,它包含了三个枚举值:RED、GRE…...
开发一套java语言的智能导诊需要什么技术?java+ springboot+ mysql+ IDEA互联网智能3D导诊系统源码
开发一套java语言的智能导诊需要什么技术?java springboot mysql IDEA互联网智能3D导诊系统源码 医院导诊系统是一种基于互联网和3D人体的智能化服务系统,旨在为患者提供精准、便捷的医院就诊咨询服务。该系统整合了医院的各种医疗服务资;智慧…...
C++| STL之string
前言:最近在做LeetCode算法题,C字符串通常都是string作为输入,所以补充一下STL里面string。在介绍的具体使用的时候,会补充char字符串相关的进行对比。 string 创建大小和容量遍历字符串比较插入字符拼接字符串分配内存查找截取分…...
[数据集][目标检测]游泳者溺水检测数据集VOC+YOLO格式4599张2类别
数据集格式:Pascal VOC格式YOLO格式(不包含分割路径的txt文件,仅仅包含jpg图片以及对应的VOC格式xml文件和yolo格式txt文件) 图片数量(jpg文件个数):4599 标注数量(xml文件个数):4599 标注数量(txt文件个数):4599 标注…...
JAVA实现麦克风说话同声传译
一、能力与场景说明 同声传译,又称同步口译或同声翻译,是一种专业的口译形式,指的是在讲话者发言时,口译员几乎同时将讲话内容翻译成目标语言。这种翻译方式通常用于国际会议、高级别政治或商业会谈、研讨会和其他需要即时多语言…...
LabVIEW与PLC通讯方式及比较
LabVIEW与PLC之间的通讯方式多样,包括使用MODBUS协议、OPC(OLE for Process Control)、Ethernet/IP以及串口通讯等。这些通讯方式各有特点,选择合适的通讯方式可以提高系统的效率和稳定性。以下将详细介绍每种通讯方式的特点、优点…...
2024/6/30 英语每日一段
Years of economic and political turbulence have brought stagnation.“In a world where there is more risk and uncertainty, people become reluctant to voluntarily move jobs and find better jobs,” says Manning. At the same time, businesses have cut back on i…...
Postman接口测试工具的原理及应用详解(五)
本系列文章简介: 在当今软件开发的世界中,接口测试作为保证软件质量的重要一环,其重要性不言而喻。随着前后端分离开发模式的普及,接口测试已成为连接前后端开发的桥梁,确保前后端之间的数据交互准确无误。在这样的背景…...
208.贪心算法:买卖股票的最佳时机||(力扣)
代码解决 class Solution { public:int maxProfit(vector<int>& prices) {int result 0; // 初始化结果为0,表示初始利润为0// 从第二天开始遍历价格数组for (int i 1; i < prices.size(); i) {// 如果当天价格比前一天价格高,则将差价加…...
【论文阅读】伸缩密度比估计:Telescoping Density-Ratio Estimation
文章目录 一、文章概览(一)问题提出(二)文章工作 二、判别比估计和密度鸿沟问题三、伸缩密度比估计(一)核心思想(二)路标创建(三)桥梁构建(四&…...
MongoDB数据库 MQL (MongoDB Query Language)语句大全
基本命令 连接到 MongoDB mongo显示所有数据库 show dbs选择(或创建)数据库 db集合操作 显示当前数据库中的所有集合 show collections创建集合 db.createCollection("myCollection")删除集合 db.myCollection.drop()文档操作 插入文…...
Java代码基础算法练习-计算平均身高-2024.07.02
任务描述: n个同学站成一排,求它们的平均身高 解决思路: 输入的学生人数为 for 循环次数,循环中每输入一个值就添加在总数中,循环结束总数除以对应的学生人数得到平均身高 代码示例: package a4_2024_07;…...
BIOS设置与系统分区
📑打牌 : da pai ge的个人主页 🌤️个人专栏 : da pai ge的博客专栏 ☁️宝剑锋从磨砺出,梅花香自苦寒来 目录 一BIOS 1破解密码的前提 2B…...
linux的安装程序 与 文件 相关的命令
软件安装卸载命令 软件包介绍软件包命名格式dpkg命令apt-get命令apt-get命令 压缩和解压命令 压缩文件后缀 压缩命令打包和解包命令 tar命令 文件分割命令 split命令 文件操作相关命令 cat命令head命令tail命令more命令less命令管道命令wc 命令grep 命令find 命令cut 命令sort …...
SAP_ABAP相关日语单词
基本概念 1. プログラミング言語 (プログラミングげんご, Puroguramingu gengo) - 编程语言 2. 開発 (かいはつ, Kaihatsu) - 开发 3. システム (システム, Shisutemu) - 系统 4. モジュール (モジュール, Mojūru) - 模块 5. トランザクションコード (トランザクションコード,…...
Python中的除法操作详解
在Python编程中,除法是一个基础但极其重要的算术操作。Python提供了多种除法运算方式,以适应不同的计算需求。以下是对Python中除法操作的全面介绍,包括示例代码。 1. 普通除法 / 普通除法使用/运算符,它返回一个浮点数结果&…...
第1章 人工智能的基础概念与应用导论
亲爱的读者朋友们,你们好!欢迎来到这个充满神奇与奥秘的人工智能世界。我知道,对于很多人来说,人工智能(AI)可能是个既神秘又高大上的词汇,仿佛遥不可及,只存在于科幻电影或者顶级科…...
jenkins api部署时,一直提示pending-Finished waiting
问题: 调用jenkins api部署时,一直提示pending-Finished waiting 解决方案: 这个问题困扰了很久,一直没有思路,后面看到调用jenkinsAPI本身会出现一段提示,pending in the quiet period,通过搜…...
AI在创造还是毁掉音乐之论文
AI在创造还是毁掉音乐? 简介:最近一个月,轮番上线的音乐大模型,一举将素人生产音乐的门槛降到了最低,并掀起了音乐圈会不会被AI彻底颠覆的讨论。短暂的兴奋后,AI产品的版权归属于谁,创意产业要…...
C++ STL容器:序列式容器-数组string,vector,array,bitset
摘要: CC STL(Standard Template Library,标准模板库)在C编程中的重要性不容忽视,STL提供了一系列容器、迭代器、算法和函数对象,这些组件极大地提高了C程序的开发效率和代码质量。 STL 容器 分为 2 大类 …...
Step3-VL-10B部署案例:金融APP界面自动化测试,覆盖85%人工回归用例
Step3-VL-10B部署案例:金融APP界面自动化测试,覆盖85%人工回归用例 1. 项目背景与痛点 金融APP的每一次版本更新,都伴随着一场紧张的回归测试。测试团队需要反复验证登录、转账、理财购买、账单查询等几十个核心功能,确保新代码…...
手把手教你用readelf解析DWARF栈信息(含常见错误排查)
深入解析DWARF栈信息:从readelf实战到疑难排查 调试二进制文件时,栈信息的解析往往是定位问题的关键。当程序崩溃或异常时,理解调用栈的状态不仅能帮助我们快速定位问题,还能揭示更深层次的运行机制。本文将带你深入探索如何利用r…...
Excel双坐标折线图保姆级教程:用散点图搞定多组数据对比(附详细步骤图)
Excel双坐标折线图进阶指南:用散点图实现精准数据可视化 在数据分析的日常工作中,我们经常遇到需要同时展示两组量纲差异巨大的数据——比如销售额(百万级)和增长率(百分比)。传统的双坐标折线图虽然能解决…...
答辩 PPT 不用熬!PaperXie AI PPT 让毕业论文答辩赢在 “门面”
paperxie-免费查重复率aigc检测/开题报告/毕业论文/智能排版/文献综述/AIPPThttps://www.paperxie.cn/ppt/createhttps://www.paperxie.cn/ppt/create 又到毕业冲刺季,当论文终于敲下最后一个句号,毕业论文答辩 PPT却成了新的 “熬夜重灾区”:…...
【悬疑言情小说推荐】《血语玫瑰》
《血语玫瑰》国际标准书号:ISBN:978-986-6364-30-3 作者:追月逐花 本书地址:http://e.dangdang.com/products/1901197341.html 每个女孩都期待男友年轻英俊、家境优渥、学识出众,而 “魔鬼” 恰好符合所有条件&…...
MAX30102传感器总是不准?Arduino避坑指南:从焊接绝缘到手指摆放的5个关键细节
MAX30102传感器精度优化全攻略:从硬件调试到算法校准的完整解决方案 MAX30102作为一款高集成度生物传感器,在心率、血氧监测领域应用广泛,但许多开发者在Arduino平台上使用时常遇到数据不稳定、测量偏差大的问题。本文将系统性地剖析影响测量…...
LFM2.5-1.2B-Thinking-GGUF基础教程:单页Web界面交互逻辑与后处理机制
LFM2.5-1.2B-Thinking-GGUF基础教程:单页Web界面交互逻辑与后处理机制 1. 模型与平台介绍 LFM2.5-1.2B-Thinking-GGUF是Liquid AI推出的轻量级文本生成模型,专为低资源环境优化设计。这个镜像采用内置GGUF模型文件和llama.cpp运行时,提供了…...
20吨燃气蒸汽锅炉实力厂家/支持上门安装调试
燃气蒸汽锅炉,认准源头实力厂家,不仅能买到品质过硬的设备,更能享受到省心便捷的上门安装调试服务,免去自行安装的繁琐与隐患,让设备快速投入平稳运行。我们作为深耕锅炉制造行业的实力厂家,具备正规生产资…...
NaViL-9B多模态提示词工程:提升图文理解准确率的10个实用技巧
NaViL-9B多模态提示词工程:提升图文理解准确率的10个实用技巧 1. 认识NaViL-9B多模态模型 NaViL-9B是一款原生支持多模态交互的大语言模型,能够同时处理文本和图像输入。与传统的纯文本模型不同,它可以直接"看懂"图片内容&#x…...
Wan2.2-I2V-A14B开源可部署:符合等保2.0要求,支持审计日志+访问控制
Wan2.2-I2V-A14B开源可部署:符合等保2.0要求,支持审计日志访问控制 1. 镜像概述与核心特性 Wan2.2-I2V-A14B是一款专为文生视频任务优化的私有部署镜像,基于RTX 4090D 24GB显存显卡和CUDA 12.4环境深度定制。本镜像不仅提供高性能的视频生成…...
