C/C++中枚举类型(enum)的使用解惑

使用boost::python::enum_实现C/C++中的枚举类型 其中之一是boost::python::enum_类,它允许我们导出C/C++中的枚举类型。在export_enum()函数中,我们创建了一个boost::python::enum_对象,并使用value()方法为每个枚举常量定义了一个Python可用的名称。总结一下,使用boost::python::enum_类可以方便地将C/C++中的枚举类型导出为Python模块,从而实现C/C++代码与Python代码的交互。使用boost::python::enum_实现C/C++中的枚举类型。 阅读详情

枚举类型,顾名思义,“枚”作为量词,作“个”讲,那么枚举,就是一个一个的列举,如果一件事情能够被一个一个的列举,那么它的数量肯定就是有限的,否则是不能被一一列举出来的。所以枚举类型即为能被列举的常量的一个集合。

在 生活中,枚举的例子随处可见,比如礼拜几,那么就可以作为一个枚举变量。这个变量所存储的值,是有限的,且,能被我们所列举。再比较说,性别。它也可以作 为一个枚举类型,我们知道,性别也就只有“男”或者“女”,它是可以被我们所列举的。它能很直观的表达出我们所定义的事件。

如:定义一个枚举类型的变量,虽然不知道变量具体是什么值,但能知道它可能会有哪些值,这样,这样,就能对程序中所出现的变量的取值有一个很好的估量,从而使程序的编写更加顺利。

枚举类型的定义写结构体的定义相似,其形式为:

   枚举的说明与结构和联合相似, 其形式为:

            enum 枚举名{

               标识符[=整型常数],

               标识符[=整型常数],

               ...

               标识符[=整型常数],

          } 枚举变量;

    如果枚举没有初始化, 即省掉"=整型常数"时, 则从第一个标识符开始,  依次

次赋给标识符0, 1, 2, ...。但当枚举中的某个成员赋值后, 其后的成员按依次

加1的规则确定其值。

例如下列枚举说明后, x1, x2, x3, x4的值分别为0, 1, 2, 3。

     enum string{x1, x2, x3, x4}x;

    当定义改变成:

    

  enum string

      {

          x1,

          x2=0,

          x3=50,

          x4,

      }x;


    则x1=0, x2=0, x3=50, x4=51

    注意:

    1. 枚举中每个成员(标识符)结束符是",",  不是";", 最后一个成员可省略

","。

    2. 初始化时可以赋负数, 以后的标识符仍依次加1。

    3. 枚举变量只能取枚举说明结构中的某个标识符常量。

    例如:

     

 enum string

      {

          x1=5,

          x2,

          x3,

          x4,

      };

     enum strig x=x3;


此时, 枚举变量x实际上是7。

 

4.在外部,我们可以对枚举变量进行赋值,不过,得要进行类型转换。

         如果我们不进行类型轮换,即如下所示进行赋值:

         x = 3;

是不允许是,如果对X进行赋值,只能对3进行类型转换.即:

x = (string)3;

那么这样就对了.

如果给x赋的不是一个整形的数,而是一个字符型的,如:

x = (string)’a’;

那么这时候x的值并不是字符’a’,而是’a’的ASCII码,我们知道,在枚举类型中,各常量的值只能是整形的,所以在对上例会自动的将’a’转换成一个整数值.从内存的角度来看来话,其实C/C++中整形和字符型的变量是一样的,它们之间可以互相转换.

 

下面是一个使用枚举类型的例子.(从网上收集得到)

#include <iostream>
using namespace std;

enum Day {Saturday, Sunday = 0, Monday, Tuesday, Wednesday,
Thursday, Friday}; //Saturday = 0 by default, Sunday = 0 as well
void Prnt (Day day)  // Print whether a day is a 'Weekend' or a "Weekday".
{
	if (day ==0) cout << "Weekend" << endl;
	else cout << "Weekday" << endl;
}

int main(){
	enum Fruit {apple, pear, orange, banana} frt1; // 'frt1' can be declarated here.
	
	// int apple; // error: redefinition of 'apple'
	
	typedef enum Fruit ShuiGuo; // In c++, 'enum' can be omitted.
	
	enum Fruit frt2 = apple; // In c++, 'enum' can be omitted.
	ShuiGuo frt3 = pear; // After type-declaration synonym, 'enum' can not exist here!
	
	frt1 = (Fruit) 0; // 'frt1' can be assigned with number by explicit cast.
	
	for (int i = apple; i <= banana; i++)
		switch (i)
		{
		   case apple: cout << "apple" << endl; break;
		   case pear: cout << "pear" << endl; break;
		   case orange: cout << "orange" << endl; break;
		   case banana: cout << "banana" << endl; break;
		   default: break;
		}
	
	// Print whether a day is a 'Weekend' or a "Weekday".
	Prnt (Saturday);
	Prnt (Sunday);
	Prnt (Monday);
	Prnt (Tuesday);
	Prnt (Wednesday);
	Prnt (Thursday);
	Prnt (Friday);
	
	
	return 0;
}

YOLOv8中的C2f模块代码详解 在YOLOv8网络结构中,C2f模块(CSP Bottleneck with 2 Convolutions)是一个关键组件,用于实现跨阶段部分聚合 阅读详情

相关推荐

大数据运维面试题及答案

1. 架构组成:- 2 个 NameNode(Active 活跃节点、Standby 备用节点),实时同步元数据(通过 JournalNode 集群,默认 3 个节点,存储 edits 日志,Active 写入、Standby 读取以保持元数据一致);- 容错性强:通过 RDD 的 “ lineage(血缘)” 机制,任务失败时可快速重算,无需从头执行。:集群 “大脑”,管理元数据(文件目录、块位置),实时响应客户端请求,数据存于内存,元数据镜像(fsimage)和编辑日志(edits)持久化到磁盘;

weixin_42795092的博客 905

[C++] enum枚举类型用法

C ++包含许多内置数据类型。 但是对于我们想要做的事来说,这些类型有时并不够用。 因此,C ++允许程序员创建自己的数据类型。 这些数据类型称为用户定义数据类型。 也许最简单的用户定义数据类型就是枚举类型(Enumerated Types)。 枚举类型中每个可能的值都定义为符号常量(称为枚举器)。 一、为什么用枚举 在了解其语法之前,先看看枚举怎么个用途,是否有学的必要呢?其实枚举是很实用的一个工具,主要体现在代码阅读方面。 设想这样一个场景,一个项目,写了上千行,有些常量类型,只有几个固定的取值,在写的

Loewen丶的小窝 7805

DSSAD自动驾驶行车记录系统体系结构和应用

通过对其感知、决策、控制等模块的详细研究,以及对商业化和消费市场发展趋势的分析,为该领域的研究和实践提供有价值的参考。通过克服技术、安全与隐私、法规与政策等方面的挑战,并紧跟人工智能、云端服务、用户体验等发展趋势,DSSAD系统将更好地适应自动驾驶行业的发展,提供更安全、智能、便捷的驾驶辅助服务。DSSAD体系结构通过数据收集模块、加密链接和数据存储模块和数据读取模块等关键模块的协同作用,构建了一个强大而灵活的自动驾驶数据记录系统,为未来智能出行提供了坚实的技术基础。

一只老虎的专栏 2207

C++枚举类型:typedef enum的用法

【代码】C++枚举类型:typedef enum的用法。

Rolandxxx的博客 4496

STM32 ADC+DMA实战:手把手教你驱动XGZP6847A压力传感器(附完整代码)

本文详细介绍了如何使用STM32的ADC和DMA外设驱动XGZP6847A压力传感器,包括硬件连接、ADC配置、DMA高效传输实现以及数据处理与校准方法。通过实战案例和完整代码,帮助开发者快速掌握高精度压力数据采集技术,适用于工业控制和医疗设备等领域。

weixin_42570484的博客 404

手把手教你使用ESM-2进行蛋白质结构预测:从安装到实战

本文详细介绍了如何使用ESM-2蛋白质语言模型进行蛋白质结构预测,从环境准备、模型安装到实战应用。通过逐步指导,读者可以掌握ESM-2的配置、单序列预测、结果可视化及高级优化技巧,适用于生物信息学研究和药物开发。

weixin_29306875的博客 532

C++新经典03--共用体、枚举类型与typedef

以往,代码中用的类型名都是C语言提供的标准类型名,如int、char、float、double等,当然,结构体、共用体、枚举类型等可以自己命名。此外,还可以用typedef关键字来定义新的类型名以代替已有的类型名。注意,typedef是用来定义新类型名的,不是用来定义变量的。看看如下代码:这相当于用INTEGER代表了int,那么定义整型变量就可以这样定义:也可以用typedef定义一个结构体类型:上面这段代码定义了一个新的类型名DATE(不是定义结构体变量,因为前面有typedef关键字。

weixin_42692164的博客 639

使用逻辑分析仪处理IIC信号

逻辑分析仪

xc_123的博客 4485

对于C++11中的enum关键字的学习理解

这几天coding的时候看到很多enum关键字,翻看C++ Primer Plus之后还是感觉少了点关于这个关键字的介绍,因此就在优快云找到2篇大佬写的文章,我看着挺全面的,现在就用本篇博客来记录自己学习enum关键字的心得体会吧。 下面将介绍enum关键字的定义,特点,以及C++11中引入的关于enum的内容 一、所谓的enum关键字 不管是c语言,还是c++语言, 其中都有enum关键字。这是这两种语言的基础知识中都会涉及到的点。 枚举 enum 的定义:枚举 enum 是一个类型(class

weixin_44980842的博客 1603

基于多智能体强化学习的轨道追逃博弈方法复现

本文提出了一种基于多智能体深度强化学习(MADDPG)的空间轨道追逃博弈方法。通过构建Actor-Critic网络架构,采用集中训练分布式执行的策略,使卫星群能够自主协调完成对非合作目标的围捕任务。代码实现了经验回放缓冲区、噪声探索机制和网络参数更新等核心功能,通过奖励函数设计平衡最短时间、燃料消耗和碰撞规避等目标。仿真结果表明该方法能有效利用数量优势,涌现出智能协同行为,为解决复杂空间博弈问题提供了新思路。

huanghm88的专栏 337

2024年游戏策划最新面试题及答案

1. **游戏策划**:负责游戏设计和开发的创意和技术过程。2. **主要职责**:设计游戏玩法、故事、角色、世界等。4. **游戏机制**:定义玩家如何与游戏世界互动的规则。13. **引人入胜的角色**:深入的背景故事、个性特征。3. **游戏平衡**:确保游戏公平、有趣且具有挑战性。7. **RPG特点**:角色发展、故事驱动、玩家选择。12. **关卡设计技巧**:挑战性、流动性、视觉引导。11. **游戏关卡设计**:创建游戏世界的不同阶段。5. **游戏循环**:玩家在游戏中重复的行为模式。

guo162308的博客 2320

C/C++中枚举类型enum使用

本文介绍了C/C++关于枚举enum使用,语法,注意点等进行了总结

无鞋童鞋的博客 2万+

Python 爬虫进阶:爬取 APP 数据(Charles 抓包 + Requests)

本文详细介绍了APP数据爬取的完整技术方案。首先通过Charles抓包工具配置HTTPS代理和证书,解析APP通信协议;然后分析请求参数、反爬机制和动态签名生成规则;接着使用Python的Requests库实现模拟请求、分页爬取和数据存储;最后针对证书问题、Token失效等常见问题提供解决方案。文章强调抓包分析、参数逆向和请求模拟三大核心技术,同时提醒开发者需遵守法律法规,合理控制爬取频率。该方案适用于移动端数据采集场景,为无法直接获取网页数据的情况提供了有效解决方案。

2503_91057718的博客 2120

C/C++中枚举类型(enum)的使用解惑 收藏

<br /> C/C++中枚举类型(enum)的使用解惑 收藏 <br />作者:hqlong 日期:2007-05-30<br /> <br />枚举类型,顾名思义,“枚”作为量词,作“个”讲,那么枚举,就是一个一个的列举,如果一件事情能够被一个一个的列举,那么它的数量肯定就是有限的,否则是不能被一一列举出来的。所以枚举类型即为能被列举的常量的一个集合。<br />在 生活中,枚举的例子随处可见,比如礼拜几,那么就可以作为一个枚举变量。这个变量所存储的值,是有限的,且,能被我们所列举。再比较说,性别。它也

持续前进 564

ssm框架搭建

这个是一个在idea上成功跑起来的ssm框架项目,保存在这里方便以后使用直接下载

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

Unix/C/C++--enum

C/C++--enum1 介绍1.1 C中enum1.2 C++中enum2 详解2.1 定义2.2 内存2.2.1 占用内存大小2.2.2 存储区域2.3 作用域2.4 存储类型2.4.1 C2.4.2 C++2.5 类型转换2.6 生命周期2.7 特殊用法3 编译参考 1 介绍 12个月份名、一周7天名、模式名、状态名,等同类名合集,在程序中会用到。使用宏定义实现,宏名过多,代码松散;使用数...

天道酬勤 894

IMSL CNL 7.0.0 (x86-64)Crack

IMSL CNL 7.0.0 (x86-64)Crack intel的算法库破解文件,这是C++版本的破解文件

enum

enum枚举类型是C/C++中的一种数据类型,与struct和class一样是用户自定义的类型,其特点在于enum类型的变量取值是有限的,是可以一一列举出来的。语法:enum 枚举名{ 标识符[=整型常数], 标识符[=整型常数], ... 标识符[=整型常数], } 枚举变量;#include < io

Lesley_驰骋沙场 462

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

C++-枚举类型(enum)

目录enum类型enum类型对象先定义枚举类型,再定义枚举变量定义枚举类型的同时定义枚举变量省略枚举名称,直接定义枚举变量enum例子枚举类型必须连续是可以实现有条件的遍历枚举类型在switch中使用整型转换成枚举 enum类型 枚举类型是被当做 int 或者 unsigned int 类型来处理的 enum 枚举名 {枚举元素1,枚举元素2,……}; 如果想实现 #define MON 1 #define TUE 2 #define WED 3 #define THU 4 #define FRI

qq_43535469的博客 6370

C/C++中枚举类型(enum)

新手入门:C/C++中枚举类型(enum)出处:PConline[ 2005-02-26 15:47:04 ] 作者:管宁 责任编辑:xietaoming        如果一个变量你需要几种可能存在的值,那么就可以被定义成为枚举类型。之所以叫枚举就是说将变量或者叫对象可能存在的情况也可以说是可能的值一一例举出来。   举个例子来说明一吧,为

civita的专栏 853

C/C++枚举类型

C/C++枚举类型 上节我们介绍了结构体。C/C++结构体 本节我们介绍枚举类型enum。 概念 枚举类型是C/C++语言中的一种基本数据类型,它可以用于声明一组常数。当一个变量有几个固定的取值时,可以将这个变量定义为枚举类型。可以提高代码的可读性。 比如可以用一个枚举变量表示月份,因为只有12个月。 也可以表示季节。 类型的定义 一般形式为: enum 枚举名 { 枚举元素1, 枚举元素2, …}; 上面的月份可以表示为 enum Month{ January, February, March,

qq_44989173的博客 524

c语言 enum typedef,typedef enum 和enum的区别

这个是在stackoverflow上面看到的,参考链接:http://stackoverflow.com/questions/385023/why-do-you-use-typedef-when-declaring-an-enum-in-c就比如说:typedef enum ssTokenType{blah1 = 0x00000000,blah2 = 0X01000000,blah3 ...

weixin_39795971的博客 320

c/c++ #define const enum浅析

对于#define,const, enum在编写一些c/c++代码的初学者在概念上可能会有所模糊。 今天我们来浅析一下三者之间的在编译,运行,与试用场景上的区别。首先让我们先逐个说说他们。 1.#define:被定义为“宏”的标识符称为“宏名”。在编译预处理时,对程序中所有出现的“宏名”,都用宏定义中的字符串去代换,这称为“宏代换”或“宏展开”。宏的替换是由预处理程序自动完成的。宏定义的作用范

qq_38313260的博客 345
上一篇: 内部连接和外部连接
下一篇: C++ 虚析构函数
seadplus
博客等级 码龄15年 57粉丝 61原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值