【C++】枚举enum使用详解

这篇具有很好参考价值的文章主要介绍了【C++】枚举enum使用详解。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

目录

一.什么是枚举enum(WHAT)

二.使用枚举enum的场景(WHEN and WHERE)

三.如何使用枚举enum(HOW)

1)枚举的定义

2)枚举的初始化

3)指定枚举类型 

4)声明枚举对象

5)枚举对象赋值问题

6)枚举的取值范围

四.枚举enum的应用


一.什么是枚举enum(WHAT)

枚举(enumeration)和类相似,能够定义一种新的数据类型,不同的是,枚举是将一组整形常量组织在一起,所以和类的使用方法有一些类似之处。

二.使用枚举enum的场景(WHEN and WHERE)

实际中经常使用枚举来做数据的标识,可以实现对数据的分类,打个比方类似于用Ture和False区分是与非,而枚举也可以在此基础上也用整形常量的方式对数据进行更多的分类。

三.如何使用枚举enum(HOW)

1)枚举的定义

1.不限定作用域的枚举

	enum color
	{
		RED,
		GREEN,
		BLUE
	};

2.限定作用域的枚举

在enum后面加关键字class或者struct

	enum class color
	{
		RED,
		GREEN,
		BLUE
	};

3.二者区别 

解决枚举值重名的问题,保持代码的可读性

//定义两种枚举
	enum class color_inner
	{
		RED,
		GREEN,
		BLUE
	};

	enum color_out
	{
		RED,
		GREEN,
		BLUE
	};

//声明并赋值
color_out backColor = RED; //正确
color_inner forntColor = RED; //错误,默认使用了out中的RED,没有指定作用域

color_out backColor = color_out::RED; //正确,out也可以显示指定作用域
color_inner forntColor = color_inner::RED;  //正确,inner必须指定作用域

2)枚举的初始化

1.默认情况下,枚举值从0开始,依次加1

	enum color
	{
		RED,  //默认是0
		GREEN, //默认是1
		BLUE  //默认是2
	};

2.手动指定枚举值

a.可以全部指定

	enum color
	{
		RED=1,  
		GREEN=5, 
		BLUE=7  
	};

b.可以部分指定,未被初始化的枚举值的值默认将比其前面的枚举值大1

	enum color
	{
		RED=2,  
		GREEN,  //默认值是3,比前一个多1
		BLUE=7  
	};

c.可以重复指定

	enum color
	{
		RED=8,  
		GREEN=5, 
		BLUE=8  //重复指定
	};

3)指定枚举类型 

C++11中,还可以指定给枚举类型赋值的整数类型,在enum的名字后面加上冒号以及指定的类型,限定作用域枚举默认为32位整形,在某些情况下,甚至没必要用到32位,为了节省开销,甚至可以用8位整形unsigned char,将类型指定成后,枚举变量变成了8位整型,减少了内存使用。不限定作用域的枚举类型,其成员不存在默认类型,只需要知道潜在类型是足够大的,肯定能容纳枚举值就行。

需要注意的是,不能指定为float或者double等类型,因为枚举量必须是一个整数,float和double都不是整数。

	enum color:unsigned long
	{
		RED=1,  
		GREEN=5, 
		BLUE=7  
	};

4)声明枚举对象

a.先声明变量,再对变量赋值

#include <iostream>
using namespace std;

int main()
{
	enum color
	{
		RED,
		GREEN,
		BLUE
	};

	enum color backColor, frontColor, innerColor;

	backColor = RED;
	frontColor = GREEN;
	innerColor = BLUE;

	cout << backColor << "--" << frontColor << "--" << innerColor << endl;
	system("pause");
	return 0;
}

b.声明变量的同时赋初值

#include <iostream>
using namespace std;

int main()
{
	enum color
	{
		RED,
		GREEN,
		BLUE
	};

	enum color backColor = RED, frontColor = GREEN, innerColor = BLUE;

	cout << backColor << "--" << frontColor << "--" << innerColor << endl;
	system("pause");
	return 0;
}

c.定义类型的同时声明变量,然后对变量赋值

#include <iostream>
using namespace std;

int main()
{
	enum color
	{
		RED,
		GREEN,
		BLUE
	}backColor, frontColor, innerColor;

	backColor = RED;
	frontColor = GREEN;
	innerColor = BLUE;

	cout << backColor << "--" << frontColor << "--" << innerColor << endl;
	system("pause");
	return 0;
}

d.类型定义,变量声明,赋初值同时进行

#include <iostream>
using namespace std;

int main()
{
	enum color
	{
		RED,
		GREEN,
		BLUE
	}backColor = RED, frontColor = GREEN, innerColor = BLUE;

	cout << backColor << "--" << frontColor << "--" << innerColor << endl;
	system("pause");
	return 0;
}

5)枚举对象赋值问题

a.不能将非枚举量赋给枚举变量,能将枚举量赋给非枚举变量,因为枚举量是符号常量,编译器会自动把枚举量转换为int类型

int a;
a=RED;

b.枚举变量不能进行算术运算,对于枚举,只定义了赋值运算符,没有为枚举定义算术运算,错误的算数计算会导致范围超限问题

RED++;  //错误
RED=GREEN+BLUE;  //错误

c.赋值超限问题

backColor = color(2); //等同于backColor = BLUE;
backColor = color(10);  //错误,超过color元素上限

6)枚举的取值范围

上限:需要知道枚举量的最大值。找到大于这个最大值的、最小的2的幂,将它减去1,得到的便是取值范围的上限

	enum color:unsigned long
	{
		RED=1,  
		GREEN=5, 
		BLUE=7  //上限是8-1=7
	};

    backColor = color(7); //所以可以取到7

下限:枚举量的最小值不小于0,则枚举下限取0;枚举量的最小值小于0,则枚举下限是 小于最小枚举量的 最大的2的幂,加上1。

	enum color:unsigned long
	{
		RED=-1,  
		GREEN=-5, 
		BLUE=-7  //下限是-8+1=-7
	};

    backColor = color(-7); //所以可以取到-7

四.枚举enum的应用

1.常和Switch搭配使用

enum color{RED, GREEN, BLUE}backColor=RED;

switch (backColor)

{

  case RED:{...;break;}

  case GREEN:{...;break;}

  case BLUE:{...;break;}

  default:break;

}

2.if...else搭配使用文章来源地址https://www.toymoban.com/news/detail-612052.html

enum color{RED, GREEN, BLUE};

color backColor=RED;

void SetColor(color color)
{
    backColor = color ;
}

if(backColor==RED)
{
    cout<<"color is RED"<<endl;
}
else if(backColor==GREEN)
{
    cout<<"color is GREEN"<<endl;
}
else if(backColor==BLUE)
{
    cout<<"color is BLUE"<<endl;
}
else
{
    cout<<"color is OTHER"<<endl;
}

到了这里,关于【C++】枚举enum使用详解的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • C# 枚举使用整理_C# enum详解

    一、枚举的定义 枚举类型 是由基础 整型数值类型 的一组命名常量定义的 值类型 。 System.Enum 类型是所有枚举类型的抽象基类。 它提供多种方法来获取有关枚举类型及其值的信息。 有关更多信息和示例,请参阅 System.Enum API 参考页。 可在基类约束中使用 System.Enum(称为枚举

    2024年02月16日
    浏览(34)
  • C#,入门教程(66)——枚举Enum的高等用法

    前言:国内码农与国外优秀程序员的最大区别是,我们的专家、教授喜欢唾沫横飞地,夸夸其谈语言特性、框架、性能,唯一目的是带私货(书籍或教程),很少能写出真有用的程序。差距在哪呢?基础!基础!基础! 枚举enum是常用的数据类型,有很多优点。 枚举使用过程

    2024年01月17日
    浏览(50)
  • C语言枚举类型enum(全面详细直观)

    维基百科的理解: 枚举类型用于声明一组命名的常数,当一个变量有几种可能的取值时,可以将它定义为枚举类型。 定义:是指将变量的值一一列出来,变量的值只限于列举出来的值的范围内。 我的理解: 枚举类型就是将一些比较固定的值一一列举出来 ,比如一年有十二个

    2024年02月06日
    浏览(78)
  • 【golang】每日chatGPT:golang中实现ENUM枚举类型 | go enum

    在golang极简的哲学思想中,没有内置枚举类型 这里我们通过map+iota去实现一个枚举类型 枚举值如下: key value 1 发电类 2 储能类 13 负荷类 打印如下: 发电类 储能类 负荷类 ========= 储能类

    2024年02月15日
    浏览(46)
  • 自定义类型之枚举类型(enum)和联合体类型(union)

    目录   枚举类型(enum) 什么是枚举类型? 枚举类型的使用 枚举类型的优势 枚举类型的应用场景 总结 联合体类型(union) 什么是联合体? 联合体的应用场景 联合体的注意事项 总结 枚举类型是C语言中一种非常有用的数据类型,它允许程序员定义一组命名的常量。枚举类型

    2024年02月20日
    浏览(45)
  • Rust 数据类型 之 类C枚举 c-like enum

    目录 枚举类型 enum 定义和声明 例1:Color 枚举 例2:Direction 枚举 例3:Weekday 枚举 类C枚举 C-like 打印输出 强制转成整数 例1:Weekday 枚举 例2:HttpStatus 枚举 例3:Color 枚举 模式匹配 match 表达式 枚举方法 枚举类型是一种用于表示一组有限数量相互关联的离散型数据,这些值可

    2024年02月16日
    浏览(41)
  • C语言中enum(枚举)详解

    enum 是 enumerate(列举,枚举)一词的缩写,是 C 语言中的一种 常量 ,被称为 enumeration constant 。 enum 提供了一种很方便的方法来将值和名称关联起来,是 #define 的一种替代方法。 enum 可以看作是一种特殊的数组,是 常量组成的列表 ,而且这个常量只能是整数型。 所以如果是

    2024年02月13日
    浏览(38)
  • Java中枚举类enum的values()方法的详解

    简介: 枚举中的一个特殊方法,values(), 在Enum 的 API 文档中也找不到这个方法,当点击values()时,也会跳到本类上。 此方法可以理解为:将枚举类转变为一个枚举类型的数组,因为枚举中没有下标,我们没有办法通过下标来快速找到需要的枚举类,这时候,转变为数组之后,

    2024年02月14日
    浏览(29)
  • 表达式必须包含整数或枚举类型 - Visual Studio C++ 错误

    在使用 Visual Studio C++ 进行编程时,有时你可能会遇到错误消息:“表达式必须包含整数或枚举类型”。这个错误通常是由于在表达式中使用了错误的数据类型导致的。在本文中,我们将详细解释这个错误的原因,并提供一些可能的解决方案。 错误原因: 当你在 C++ 程序中使

    2024年02月05日
    浏览(50)
  • Visual Studio 2010 C++编译错误“表达式必须包含整数或枚举类型“

    Visual Studio 2010 C++编译错误\\\"表达式必须包含整数或枚举类型\\\" 在使用Visual Studio 2010编写C++代码时,有时候会出现这样的编译错误:“表达式必须包含整数或枚举类型”。这个错误通常是因为我们在写代码时使用了错误的数据类型或者运算符导致的。 下面我们来看一个例子: 在

    2024年02月08日
    浏览(46)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包