枚举类型的定义和应用总结

定义:
如果一种变量只有几种可能的值,可以定义为枚举类型。所谓“枚举类型”是将变量的值一一列举出来,变量的值只能在列举出来的值的范围内。

声明:
声明枚举类型用enum开头,例如:


代码如下:

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

上面声明了一个枚举类型weekday,花括号中的sun,mon,。。。。sat等称为枚举元素或枚举常量。

这些枚举常量,不会因为我们写了sun就自动代表着“星期天”,它只是一个符号,究竟用来代表什么含义,完全却决于程序员自己对它们的处理。

表示这个类型的变量的值只能是以上7个值之一,他们是用户自己定义的标识符。

在声明了枚举类型之后,就可以用它开定义变量。如


代码如下:

weekday workday,week_end;

这样,workday和week_end被定义为枚举类型weekday的变量。

说明:
(1)对枚举元素按照常量处理,故称为枚举常量。它们不是变量,不能对他们赋值。

(2)枚举元素作为常量,它们是有值的,C++编译按定义时的顺序对它们赋值为0,1,2,3,......


代码如下:

#include<iostream>
using namespace std;
int main(){
 enum weekday{sun,mon,tue,wed,thu,fri,sat};
 weekday one;
 one=sun;
 cout<<one;
 cout<<endl;
}

我们也卡一在声明枚举类型时,另行指定枚举元素的值,如


代码如下:

#include<iostream>
using namespace std;
int main(){
 enum weekday{sun=7,mon=1,tue,wed,thu,fri,sat};
 weekday one,two;
 one=sun;
 two=wed;
 cout<<one<<endl;
 cout<<two<<endl;
 cout<<endl;
}



指定sun为7,mon为1,以后按顺序加1,sat为6。

(3)枚举值可以用来做比较。

枚举值的比较规则是按其在声明枚举类型时的顺序号比较。如果定义时未人为指定,则第一个枚举元素的值认作0.


代码如下:

#include<iostream>
using namespace std;
int main(){
 enum weekday{sun=7,mon=1,tue,wed,thu,fri,sat};
 weekday one,two;
 one=sun;
 two=wed;
        cout<<(sun>wed?sun:wed);
 cout<<endl;
}

(4)一个整数不能直接赋给一个枚举变量,应先进行强制类型转换才能赋值。


代码如下:

#include<iostream>
using namespace std;
int main(){
 enum weekday{sun,mon,tue,wed,thu,fri,sat};
 weekday one;
 one=weekday(7);
 cout<<one;
 cout<<endl;
}

以上的语句是将序号为2的枚举元素赋给one。相当于


代码如下:

one=sun;

一个例子:
口袋中有红、黄、蓝、白、黑5种颜色的球若干。每次从口袋中任意取出3个球,问得到3中不同颜色的球的可能取法,输出每种排列的情况。

分析:球的颜色只有5种,每一个球的颜色只能是这5种之一,因此可以用枚举类型变量来处理。


代码如下:

/*******
设某一次取出的颜色为i,j,k。显然,i,j,k都是以上5中颜色之一,根据题意,
要求i,j,k三者互不相同。可以用穷举法,对每一种可能分别进行测试,看那一组符合条件
*****/
#include<iostream>
using namespace std;
int main(){
   enum color{red,yellow,blue,white,black};
   color pri;
   int i,j,k,n=0,loop;
   for(i=red;i<=black;i++){
    for(j=red;j<=black;j++)
     if(i!=j){
      for(k=red;k<=black;k++){
       if(k!=i&&k!=j){
        n++;//使n累加,统计可能的抽取情况
        cout<<n<<"\t";
        for(loop=0;loop<3;loop++){//通过循环,输出该次i,j,k所对应的颜色
         switch(loop){
          case 0:pri=color(i);break;
          case 1:pri=color(j);break;
          case 2:pri=color(k);break;
         }
         switch(pri){
          case red:   cout<<"red\t";break;
          case yellow:cout<<"yellow\t";break;
          case blue:  cout<<"blue\t";break;
          case white: cout<<"white\t";break;
          case black: cout<<"black\t";break;
         }
        }
        cout<<endl;
       }
      }
    }
   }
   cout<<"total:"<<n<<endl;
}

(0)

相关推荐

  • C#枚举数值与名称的转换实例分享

    首先建立一个枚举: 复制代码 代码如下: /// <summary>    /// 颜色    /// </summary>    public enum ColorType    {        /// <summary>        /// 红色         /// </summary>        Red, /// <summary>        /// 蓝色         /// </summary>      

  • 枚举的用法详细总结

    1.枚举enum的用途浅例写程序时,我们常常需要为某个对象关联一组可选alternative属性.例如,学生的成绩分A,B,C,D等,天气分sunny, cloudy, rainy等等.更常见的,打开一个文件可能有三种状态:input, output和append. 典型做法是,对应定义3个常数,即:const int input = 1;const int output = 2;const int append = 3;然后,调用以下函数:bool open_file(string file_

  • C# 遍历枚举类型的所有元素

    比如定义了一个错误的枚举类型 复制代码 代码如下: public enum eErrorDetailCode : int         {             登陆成功 = 0,             登出 = 1,             应用错误 = 2,             成功 = 16,             失败 = 17         } 需要引用 using System; 然后在循环中,遍历枚举对象的所有元素 复制代码 代码如下: foreach (int  m

  • C# 获取枚举值的简单实例

    先申明一个枚举: 复制代码 代码如下: public enum Test_Enum        {            one = 1001, two = 1002, three = 1003, four = 1004, five = 1005, six = 1006, seven = 1007, eight = 1008, nine = 1009, zero = 1000        } 获取值: 复制代码 代码如下: object ojb = Enum.GetName(typeof(T

  • FileShare枚举的使用小结(文件读写锁)

    开发过程中,我们往往需要大量与文件交互,读文件,写文件已成家常便饭,本地运行完美,但一上到投产环境,往往会出现很多令人措手不及的意外,或开发中的烦恼,因此,我对普通的C#文件操作做了一次总结,问题大部分如下: 1:写入一些内容到某个文件中,在另一个进程/线程/后续操作中要读取文件内容的时候报异常,提示 System.IO.IOException: 文件"XXX"正由另一进程使用,因此该进程无法访问此文件. 2:在对一个文件进行一些操作后(读/写),随后想追加依然报System.IO.I

  • 浅析Java编程中枚举类型的定义与使用

    定义枚举类型时本质上就是在定义一个类,只不过很多细节由编译器帮您补齐了,所以某些程度上,enum关键字的 作用就像是class或interface. 当您使用"enum"定义枚举类型时,实质上您定义出来的类型继承自 java.lang.Enum 类,而每个枚举的成员其实就是您定义的枚举类型的一个实例(Instance),它们都被默认为 final,所以您无法改变它们,它们也是 static 成员,所以您可以透过类型名称直接使用它们,当然最重要的,它们都 是公开的(public). 举个

  • 深入解析c#中枚举类型的定义与使用

    介绍枚举是一个指定的常数,其基础类型可以是除 Char 外的任何整型.如果没有显式声明基础类型,则使用 Int32.编程语言通常提供语法来声明由一组已命名的常数和它们的值组成的枚举. 定义默认基数从O开始,也可指定数值.enum Days { Saturday=1, Sunday, Monday, Tuesday, Wednesday, Thursday, Friday };enum Colors { Red = 1, Green = 2, Blue = 4, Yellow = 8 }; 使用C

  • 枚举类型的定义和应用总结

    定义:如果一种变量只有几种可能的值,可以定义为枚举类型.所谓"枚举类型"是将变量的值一一列举出来,变量的值只能在列举出来的值的范围内. 声明:声明枚举类型用enum开头,例如: 复制代码 代码如下: enum weekday{sun,mon,tue,wed,thu,fri,sat}; 上面声明了一个枚举类型weekday,花括号中的sun,mon,....sat等称为枚举元素或枚举常量. 这些枚举常量,不会因为我们写了sun就自动代表着"星期天",它只是一个符号,究

  • Swift编程之枚举类型详解

    想必写过程序的童鞋对枚举类型并不陌生吧,使用枚举类型的好处是多多的,在这儿就不做过多的赘述了.Fundation框架和UIKit中的枚举更是数不胜数,枚举可以使你的代码更易阅读并且可以提高可维护性.在Swift语言中的枚举可谓是让人眼前一亮.在Swift中的枚举不仅保留了大部分编程语言中枚举的特性,同时还添加了一些好用而且实用的新特性,在本篇文章中将领略一些Swift中枚举类型的魅力. 有小伙伴会问,不就是枚举么,有什么好说的.在Swift中的枚举怎不然,Swift中的枚举的功能要强大的多,不仅

  • 掌握JDK1.5枚举类型

    Enum作为Sun全新引进的一个关键字,看起来很象是特殊的class, 它也可以有自己的变量,可以定义自己的方法,可以实现一个或者多个接口. 当我们在声明一个enum类型时,我们应该注意到enum类型有如下的一些特征. 1.它不能有public的构造函数,这样做可以保证客户代码没有办法新建一个enum的实例. 2.所有枚举值都是public , static , final的.注意这一点只是针对于枚举值,我们可以和在普通类里面定义 变量一样定义其它任何类型的非枚举变量,这些变量可以用任何你想用的

  • 全面了解结构体、联合体和枚举类型

    一. 结构体: 1. 定义结构体类型: struct 结构体    {        任意类型 任意变量:        任意类型 任意变量:        -- }: 注意:这不是定义变量,而是自定义一种类型而已. 如 struct student    {     char name[10];//学生姓名             int height;//学生身高             bool sex;//学生性别 假设0表示女,1表示男.           }://此处分号不能少.

  • Java的枚举类型使用方法详解

    1.背景 在java语言中还没有引入枚举类型之前,表示枚举类型的常用模式是声明一组具有int常量.之前我们通常利用public final static 方法定义的代码如下,分别用1 表示春天,2表示夏天,3表示秋天,4表示冬天. public class Season { public static final int SPRING = 1; public static final int SUMMER = 2; public static final int AUTUMN = 3; publ

  • C语言 枚举类型(Enum)详解及示例代码

    在实际编程中,有些数据的取值往往是有限的,只能是非常少量的整数,并且最好为每个值都取一个名字,以方便在后续代码中使用,比如一个星期只有七天,一年只有十二个月,一个班每周有六门课程等. 以每周七天为例,我们可以使用#define命令来给每天指定一个名字: #include <stdio.h> #define Mon 1 #define Tues 2 #define Wed 3 #define Thurs 4 #define Fri 5 #define Sat 6 #define Sun 7 in

  • 扒一扒 Java 中的枚举类型

    前言 在 Java 中, 枚举, 也称为枚举类型, 其是一种特殊的数据类型, 它使得变量能够称为一组预定义的常量. 其目的是强制编译时类型安全. 枚举类更加直观,类型安全.使用常量会有以下几个缺陷: 1. 类型不安全.若一个方法中要求传入季节这个参数,用常量的话,形参就是int类型,开发者传入任意类型的int类型值就行,但是如果是枚举类型的话,就只能传入枚举类中包含的对象. 2. 没有命名空间.开发者要在命名的时候以SEASON_开头,这样另外一个开发者再看这段代码的时候,才知道这四个常量分别代

  • C++枚举类型用法总结(枚举字符常量代替常量)

    C++枚举类型enum表示枚举,通常用于定义个新类型的字符常量,比如enum {January,February,March}.枚举类型的作用域一般是整个文件或者类内.当枚举类型定义在文件开头时,则作用域是从定义位置开始往后(不包括函数内定义):当枚举类型在类内定义时,则作用域为整个类内.在类内的头文件定义和初始化枚举类型,当实例这个类的对象时,枚举类型不会占用空间,只是包含一个字符常量而已. 枚举类型的定义可以在整个文件夹,也可以在类内.当在整个文件夹时,所有枚举量不能有相同的.当在类内时,不

随机推荐