枚举类型:

语法格式:

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. JSONP技术原理及实现

    跨域问题一直是前端中常见的问题,每当说到跨域,第一浮现的技术必然就是JSONP JSONP在我的理解,它并不是ajax,它是在文档中插入一个script标签,创建_callback方法,通过服务器配合 ...

  2. [转] CSS3混合模式mix-blend-mode/background-blend-mode简介 ---张鑫旭

    by zhangxinxu from http://www.zhangxinxu.com本文地址:http://www.zhangxinxu.com/wordpress/?p=4819 一.关于混合模 ...

  3. Balsamiq Mockups

    Balsamiq Mockups完全手册 2010.03.18 发布 48,066 浏览 什么是Balsamiq Mockups Balsamiq Mockups出自加利福尼亚州的Balsamiq工作 ...

  4. Android 网络通信 HTTP

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

  5. 【pyhton】短路逻辑

    编程语言常用的逻辑if a and b:#如果a是false,那么跳过b的判断,结果直接falseif a or b:#如果a为true,那么跳过b的判断,直接true

  6. smali 语法之if语句

    # virtual methods .method public onClick(Landroid/view/View;)V .locals 3 .parameter "v" .p ...

  7. apache301重定向设置

    <VirtualHost ip地址>   #DocumentRoot /文件夹/  ServerName XXXX.com  RewriteEngine on  RewriteRule ^ ...

  8. Java 内存区域和GC机制--备用

    Java垃圾回收概况 Java GC(Garbage Collection,垃圾收集,垃圾回收)机制,是Java与C++/C的主要区别之一,作为Java开发者,一般不需要专门编写内存回收和垃圾清理代 ...

  9. ExtJS中动态设置TextField的readOnly属性

    第一种方式: textField, 如果知道textField的id = 'textField' 话,就可以利用如下的方法: 则代码如下:Ext.getCmp("textField" ...

  10. 保留你的dSYM文件

    大家编译iPhone程序的时候,都会发现二进制文件的旁边生成了一个.dSYM文件.以前一直不知道这个文件是用来干嘛的,今天才知道这个是symbol file,用来debug用的. 大家可以读读这篇文档 ...