一、枚举类型的应用场景

  只需要将需要的变量值一一列举出来,便构成一个枚举类型。

二、枚举类型的定义

·定义方式:

enum 枚举类型名字{枚举常量表};
·关键字enum:说明接下来定义的是一个枚举类型
 
·枚举类型名字:指明此处定义的枚举类型的名字。
 
·枚举常量表:由枚举常量(或称枚举成员)构成。枚举常量表列出枚举类型所有可能的取值,各枚举常量之间用“,”间隔,且各枚举常量必须不同。
 
·应用举例:

enum Weekday{SUN,MON,TUE,WED,THU,FRI,SAT};//定义枚举类型weekday

enum color_set{RED,BLUE,WHITE,BLACK};//定义枚举类型color_set

·特别注意:枚举常量只能以标识符形式表示,而不能是整型、字符型等文字常量。例如,以下定义非法

enum year_set{,,,,};//枚举常量不能是整形常量

enum book_set{'a','b','c','d'};//枚举类型不能是字符常量

三、枚举类型应用说明

1、枚举元素具有默认值。默认从0开始,依次为0,1,2,3......

例如:

enum Weekday{SUN,MON,TUE,WED,THU,FRI,SAT};//定义枚举类型weekday
//默认从0开始,即SUN=0,MON=1,依次为0,1,2,3,4,5,6,SAT=6

2、可以在声明中另行定义枚举元素的值。

enum Weekday{SUN=,MON=,TUE,WED,THU,FRI,SAT};
//定义SUN=7,MON=1,则后面的值在前面值的基础上依次加1,即TUE=2,WED=3,......SAT=6

3、枚举类型可以进行关系运算。

例如:

day1=SUN;//day1中元素SUM的序号值为0
DAY2=MON;//day2中元素MON的序号值为1
if(day2>day1)//day2>day1比较的就是序号值的关系1>0

4.枚举变量可以直接输出,输出的是变量的整数值。

enum color_set1 {RED, BLUE, WHITE, BLACK};
color3=RED; //将枚举常量值赋给枚举变量
cout<< color3; //输出的是color3的整数值,即RED的整数值1

5、整数值不能直接赋给枚举变量,如需将整数赋给枚举变量,应进行强制类型转换。

      枚举(隐含转换)整形

      整形(显示转换)枚举

1)枚举型数据隐含转换为整型数据(隐含转换)

int count=MON;//将枚举型数据MON的值赋给整型数据数据count
int  a;
a=SUN;//枚举值赋给整型变量
cout<<a;

2)整型数据转换为枚举数据(显式转换)

result=GameResult(count);//显示转换,括号中的整型数据转换成枚举数据

6、对枚举元素按常量处理,但不能对它们直接赋予常量值。

SUN=;//SUN是枚举元素,不能赋值,此语句非法

若将整数值赋给枚举变量需要进行强制类型转换:值前面加(类型)

SUN=(Weekday);//在值前面加(类型)是常用的强制类型转换方法

7、如果为枚举变量赋值,则它们必须是整数。枚举变量相当于整型变量的一个子集。

enum weekday{SUN=1.1,MON=1.2,......};//枚举变量赋值只能是整数,相当于整型变量的一个子集,此语句非法

四、典型例题——代码运用

1)声明枚举类型Weekday,包括SUNDAY到SATURDAY七个元素在程序中声明Weekday类型的变量,对其赋值,声明整型变量,看看能否对其赋Weekday类型的值。

#include<iostream>
using namespace std;
enum Weekday {SUN,MON,TUE,WED,TUR,FRI,STA};
int main()
{
Weekday day;
enum Weekday today = FRI;
day = SUN;
cout << day << endl << today << endl;
return ;
}

实验测试:若将整型数据赋给枚举变量,则会出现以下错误。

int main()
{
Weekday day;
enum Weekday today = FRI;
day = 5;//修改为 day =(Weekday)5;
cout << day << endl << today << endl;
return ;
}

完整分析:

#include<iostream>
using namespace std;
enum Weekday { SUN, MON, TUE, WED, TUR, FRI, STA };//声明枚举类型名weekday
int main()
{
Weekday day;
enum Weekday today = FRI;//枚举型变量 day ,today
int yesterday;//整型变量 yesterday
yesterday = TUR;//对整型变量赋weekday型的值,测试是否正确,结果正确:枚举型变量(小)->整形变量(大),隐式转换
//day = SUN;//对枚举型变量赋weekday型的值,若对枚举形变量赋整型值,是否正确?
//day = 0;//报错:无法从int型转换为枚举类型weekday
day = (Weekday);//正确!强制类型转换,格式day=Weekday(0); 也正确
cout << day << endl << today <<endl<<yesterday<< endl;
return ;
}

2)口袋中有红、黄、蓝、白、黑5种颜色的球若干个。每次从口袋中取出3个不同颜色的球,问有多少种取法。

#include<iostream>
using namespace std;
void transfer(int i)//将相应的数值组合通过switch语句转换为字符串
{
switch (i)
{
case :cout << "red "; break;
case :cout << "yello "; break;
case :cout << "blue "; break;
case :cout << "white "; break;
case :cout << "black "; break;
}
}
enum ball { red, yello, blue, white, black };//定义球的枚举类型
int main()
{
int i, j, k, count = ;
for (int i = red; i <= black; i++)
{
for (int j = i + ; j <= black; j++)
{
for (int k = j + ; k <= black; k++)
{
transfer(i);
transfer(j);
transfer(k);
cout << endl;
count++;
}
}
}
cout << count;
return ;
}

 

C++枚举类型教案的更多相关文章

  1. Asp.Net 将枚举类型(enum)绑定到ListControl(DropDownList)控件

    在开发过程中一些状态的表示使用到枚举类型,那么如何将枚举类型直接绑定到ListControl(DropDownList)是本次的主题,废话不多说了,直接代码: 首先看工具类代码: /// <su ...

  2. golang枚举类型 - iota用法拾遗

    在c#.java等高级语言中,经常会用到枚举类型来表示状态等.在golang中并没有枚举类型,如何实现枚举呢?首先从枚举的概念入手. 1.枚举类型定义 从百度百科查询解释如下:http://baike ...

  3. 第三条:用私有构造器或者枚举类型强化Singleton属性

    1.使用单元素的枚举类型 public enum Singleton implements Serializable { INSTANCE; private String field; public ...

  4. 在WPF中使用变通方法实现枚举类型的XAML绑定

    问题缘起 WPF的分层结构为编程带来了极大便利,XAML绑定是其最主要的特征.在使用绑定的过程中,大家都普遍的发现枚举成员的绑定是个问题.一般来说,枚举绑定多出现于与ComboBox配合的情况,此时我 ...

  5. 窥探Swift之别样的枚举类型

    想必写过程序的童鞋对枚举类型并不陌生吧,使用枚举类型的好处是多多的,在这儿就不做过多的赘述了.Fundation框架和UIKit中的枚举更是数不胜数,枚举可以使你的代码更易阅读并且可以提高可维护性.在 ...

  6. C#枚举类型的常用操作总结

    枚举类型是定义了一组"符号名称/值"配对.枚举类型是强类型的.每个枚举类型都是从system.Enum派生,又从system.ValueType派生,而system.ValueTy ...

  7. TypeScript中的枚举类型

    TypeScript拓展了Javascript原生的标准数据类型集,增加了枚举类型(enmu)和其他语言一 样 它提供我们一种数字类型的值,用来设置由于辨别的名字和方法 enum Students { ...

  8. Python 中的枚举类型~转

    Python 中的枚举类型 摘要: 枚举类型可以看作是一种标签或是一系列常量的集合,通常用于表示某些特定的有限集合,例如星期.月份.状态等. 枚举类型可以看作是一种标签或是一系列常量的集合,通常用于表 ...

  9. java 枚举类型 构造函数及用法

    // 1. 定义枚举类型 public enum Light { // 利用构造函数传参 RED (1), GREEN (3), YELLOW (2); // 定义私有变量 private int n ...

随机推荐

  1. ubuntu之路——day5(今天看了浅层神经网络的数学推导过程)

    1.初始化 2.前向传播 导数比较好理解 3.反向传播 全符号积分的推导看得我头有点晕 最后唤起我依稀的线代回忆 感谢吴恩达老师的反向传播讲解,第一遍看的有点晕,然后仔细看了一下又找了个B站的推导就懂 ...

  2. Java_jdbc 基础笔记之一 数据库连接

    方式一: 1.创建一个Driver实现类的对象 2.准备连接数据库的基本信息:url,user,password 3.调用Driver接口的connect(url,info)获取数据库连接 * Dri ...

  3. CMU Database Systems - Parallel Execution

    并发执行,主要为了增大吞吐,降低延迟,提高数据库的可用性 先区分一组概念,parallel和distributed的区别 总的来说,parallel是指在物理上很近的节点,比如本机的多个线程或进程,不 ...

  4. Leetcode: Campus Bikes II

    On a campus represented as a 2D grid, there are N workers and M bikes, with N <= M. Each worker a ...

  5. ISO/IEC 9899:2011 条款6.6——常量表达式

    6.6 常量表达式 语法 1.constant-expression conditional-expression 描述 2.一个常量表达式可以在翻译期间被计算,而不是在运行时,并且根据情况可以被用于 ...

  6. pl/sql用for in和for select into循环遍历表

    create or replace procedure test_procedure_job asv1 varchar2(50);v2 varchar2(50);v3 varchar2(50);beg ...

  7. Qt tableview加载数据

    Qt tableview加载数据 //把数据加载到tableView void ImportData::loadDataInTableView() { ) { if (pageNum>stude ...

  8. Win10 x64 pnglib Debug

    Win10 x64  pnglib Debug >------ 已启动生成: 项目: ZERO_CHECK, 配置: Debug x64 ------ > Checking Build S ...

  9. linux无网络情况下安装rpm包

    首先理清楚两个东西:rpm和yum.rpm全称redhat package manager,用来管理软件包:yum全称yellow dog updater,modified,它是rpm的前端程序,因为 ...

  10. Django中的QuerySet查询优化之实例篇

    转载的,做个笔记,原文链接 在数据库有外键的时候,使用 select_related() 和 prefetch_related() 可以很好的减少数据库请求的次数,从而提高性能.本文通过一个简单的例子 ...