枚举类型:

语法格式:

enum 枚举类型名 {变量值列表};

例如:

enum  Weekday{sun, mon, tue, wed, thu, fri, set};

声明了枚举类型后,就可以定义枚举类型的变量了。定义枚举变量的语法格式为:

enum 枚举类型名  标示符;

枚举类型名  标示符;

例如:

enum  Weekday aday;

也可以把声明枚举类型和定义枚举类型变量合为一步:

enum{变量列表} 标示符;

例如:

enum {sun, mon, tue, wed, thu, fri, set} aday;

变量aday的值只能是sun到sat之一

声明枚举类型时,变量值列表中的标示符是一些符号常量,每一个都对应一个确定的整数值。第一个符号常量的值为0,第二为1,以此类推。

也可以在声明枚举类型时自行制定符号常量的值,制定的值必须是整数。

例如:

enum Weekday{sun, mon , tue=5, wed, fri,sat};

其中,sun=0、mon=1、tue=5、wed=6、….sat=9.

不能把一个整数值直接赋值给一个枚举类型的变量:

aday=2;       //错误

但是可以通过强制类型转换将整数赋值给枚举类型的变量。

例如:

aday=(Weekday)2;

实例:

#include<iostream>

using namespace std;

void main()

{

enum Weekday{sun , mon , tue , wed , thu , fri , sat};

Weekday  day1 , day2;

int  in1,in2;

cout<< “请输入两个0到6之间的整数:”<<endl;

cin>>in1>>in2;

day1=(Weekday)in1;

day2=(Weekday)in2;

if(day1==day2)

{

cout<< “您输入的都是”;

switch(day1)

{

case sun: cout<< “星期日”<<endl; break;

case mon: cout<< “星期一”<<endl; break;

case tue: cout<< “星期二”<<endl; break;

case wed: cout<< “星期三”<<endl; break;

case thu: cout<< “星期四”<<endl; break;

case fri: cout<< “星期五”<<endl; break;

case sat: cout<< “星期六”<<endl; break;

}

}

else

{

cout<< “您输入的两天分别是:”;

switch(day1)

{

case sun: cout<< “星期日”<<endl; break;

case mon: cout<< “星期一”<<endl; break;

case tue: cout<< “星期二”<<endl; break;

case wed: cout<< “星期三”<<endl; break;

case thu: cout<< “星期四”<<endl; break;

case fri: cout<< “星期五”<<endl; break;

case sat: cout<< “星期六”<<endl; break;

}

switch(day2)

{

case sun: cout<< “星期日”<<endl; break;

case mon: cout<< “星期一”<<endl; break;

case tue: cout<< “星期二”<<endl; break;

case wed: cout<< “星期三”<<endl; break;

case thu: cout<< “星期四”<<endl; break;

case fri: cout<< “星期五”<<endl; break;

case sat: cout<< “星期六”<<endl; break;

}

}

}

一道面试题:

下面代码片段的输出是:

enum{

A ,B , C = 1 ,D,

};

std::cout<<B<< ‘ ’<<D<<std::endl;

A 1 1 B 1 2  C 2 1  D 2 2

答案:B

默认下”接下来的枚举子取值是前面一个枚举子的取值+1“。既然这两个枚举子没有显式赋值,那么就按照默认规则办事,所以B==1,D==2 从这个例子也可以看出,同一枚举中枚举子的取值不需要唯一。

c\c++复习基础要点16----枚举类型的更多相关文章

  1. Java基础教程:枚举类型

    Java基础教程:枚举类型 枚举类型 枚举是将一具有类似特性的值归纳在一起的方法.比如,我们可以将周一到周日设计为一个枚举类型.彩虹的七种颜色设计为一个枚举类型. 常量实现枚举 我们通过定义常量的方式 ...

  2. java基础知识代码-------枚举类型

    package com.mon10.day22; /** * 类说明 :枚举类型,案例二 * * @author 作者 : chenyanlong * @version 创建时间:2017年10月22 ...

  3. Java基础教程(15)--枚举类型

      枚举类型定义了一个枚举值的列表,每个值是一个标识符.例如,下面的语句声明了一个枚举类型,用来表示星期的可能情况: public enum Day { SUNDAY, MONDAY, TUESDAY ...

  4. C#基础 结构体 枚举类型

    结构体:就是一个自定义的集合,里面可以放各种类型的元素,用法大体跟集合一样. 一.定义的例子: struct student { public int nianling; public int fen ...

  5. JAVA基础部分复习(七、JAVA枚举类型使用)

    /** * java中的枚举 * 枚举(enum),是指一个经过排序的.被打包成一个单一实体的项列表.一个枚举的实例可以使用枚举项列表中任意单一项的值. * 枚举在各个语言当中都有着广泛的应用,通常用 ...

  6. c/c++ 复习基础要点01-const指针、指针函数 函数指针、new/delete与malloc/free区别与联系

    1.      引用本身是有指针实现的:引用为只读指针 例子: int d=123; int& e=d;    //引用 int * const e=d; //只读指针,e指向d,不可修改e指 ...

  7. c++复习基础要点02 虚函数与模板 与static inline是否共存

    1.      虚函数能否定义为模板函数 当一个类有虚函数时,它一定有一个虚表,用来纪录每个虚函数的实际地址.这也就是说这个虚表的大小是在编译期就确定了的.有多少个虚函数,虚表就纪录几个.       ...

  8. c\c++复习基础要点08--c++单例模式

    单例模式有许多种实现方法,在c++中,甚至可以直接用一个全局变量做到这一点,但是这样的代码显得不优雅.使用全局对象能够保证方便地访问实例,但是不能保证只声明一个对象——也就是说除了一个全局实例外,仍然 ...

  9. C#语言基础——结构体和枚举类型

    结构体和枚举类型 一.结构体(struct) 结构类型是用户自己定义的一种类型,它是由其他类型组合而成的,可包含构造函数.常数.字段.方法.属性.索引器.运算符.事件和嵌套类型的值类型.结构在几个重要 ...

随机推荐

  1. SQL,学习基础2

    列=字段, 记录=实体  事物日志文件(用来记录数据库的增删情况,扩展名LDF) 数据库文件(但是只有一个是主数据库文件(即用它来启动的),其余为次数据库文件)mdf 数据类型: 整形(整数)——in ...

  2. 初尝 MVC4

    文章内容参考 http://www.cnblogs.com/leoo2sk/archive/2008/10/27/1320285.html 开发环境 VS2010 ,VS2010 开发 MVC4 需下 ...

  3. http请求的组成部分

    报文流 1.HTTP 报文是在HTTP 应用程序之间发送的数据块.这些数据块以一些文本形式的元信息(meta-information)开头,这些信息描述了报文的内容及含义,后面跟着可选的数据部分.这些 ...

  4. 学渣也要搞 laravel(2)—— HTTP路由[1]篇

    前几天忙了,然后快两个星期没有发博客.今天正式回归.哈哈 1. 路由 说到路由当时学的时候给我疑惑了几天..没有仔细看文档.然后一脸蒙蔽的去用 postman[谷歌插件] 测试路由方法.然后就很奇怪 ...

  5. Android 网络通信 HTTP

    摘要 1. Http GET 方法访问网站 2. Http POST访问网站 3. HttpClient进行Get方式通信 4. HttpClient进行Post方式通信 -------------- ...

  6. PHPCMS标签大全

    {$head[title]} 页面标题,用法: {$phpcms[sitename]} 网站名称 用法: {$head[keywords]} 要害字 用法: {$head[description]} ...

  7. ASP.NET 后台不识别ASPX中的控件

    请问后台不识别ASPX中的控件,怎么解决 这个程序是在网上下载的 C# code <asp:DataGrid runat="server" ID="dgList1& ...

  8. odoo8 email

    ?? return 地址和 from 地址不一致,为什么不能发送成功? replay地址. 根据对象(比如purchase.order)发送邮件,可以通过supermessage_get_email_ ...

  9. highcharts-Highmaps 动态传入城市名称

    做前端按地区(地图)分布监控数据展示用了 HIGHMAPS JAVASCRIPT MAPS 控件,很好很强大. 基础实现是这样的:调用插件动态传入需要展示的数据(data),插件会在地图数据(mapd ...

  10. C语言笔记(二维数组与数值指针)

    一.关于二维数组和二维数组区别 (1)一维数组在内存中是连续分布存储的,同样,二维数组也是在内存连续存储的.所以从内存的角度来分析,一维数组和二维数组其实没有本质区别. (2) 二维数组可以使用一维数 ...