精华内容
下载资源
问答
  • 定义:如果一种变量只有几种可能的值,可以定义枚举类型。所谓“枚举类型”是将变量的值一一列举出来,变量的值只能在列举出来的值的范围内。 声明:声明枚举类型用enum开头,例如: 代码如下:enum weekday{sun,...
  • 比如定义了一个错误的枚举类型 代码如下:public enum eErrorDetailCode : int { 登陆成功 = 0, 登出 = 1, 应用错误 = 2, 成功 = 16, 失败 = 17 } 需要引用 using System;  然后在循环中,遍历枚举对象的...
  • 实际生活中的月份、星期、...enum 枚举类型名称 {枚举元素1[=数值1], 枚举元素 2[=数值2],…} enum WEEK { MON=1,TUE,WED,THU,FRI,SAT,SUN} WEEK是枚举类型,MON等是枚举元素或称为命名的枚举常 量。 每个枚举类型

    实际生活中的月份、星期、性别等这类信息,对于这些比较 复杂的数据的表示,C#提供了枚举类型来保证数据在有实际 意义的合法取值范围内取值。

    枚举与结构体类型一样,是由程序员定义的类型。即一种由 一组称为枚举数列表的命名常量组成的独特类型。
    枚举类型的定义形式为:

    enum 枚举类型名称 {枚举元素1[=数值1], 枚举元素 2[=数值2],…}

    enum WEEK { MON=1,TUE,WED,THU,FRI,SAT,SUN}
    WEEK是枚举类型,MON等是枚举元素或称为命名的枚举常 量。

    每个枚举类型都有一个底层整数类型,默认为int。每个枚举 成员被赋值为一个底层类型的常量值;在默认情况下,编译器 把第一个成员赋值为0,并对每一个后续成员的值比前一个成 员多1。

    如果指定了某个枚举常量的值后,其后续的枚举常量就从当 前枚举常量依次递增1。

    使用枚举类型时,还需要注意:

    ①与结构体类型一样,枚举是值类型,因此直接存储它们的数 据,而不是分开存储数据和引用;

    ②枚举只有一种类型的成员:命名的整数值常量;

    ③不能对枚举类型的成员使用修饰符。它们都隐式地具有和枚 举相同的可访问性;
    ④由于枚举类型的成员是常量,即使在没有该枚举类型的变量 时它们也可以访问。使用枚举类型名、成员引用运算符加成员 名的形式就可以实现对枚举类型成员的访问;

    ⑤不允许对不同枚举类型的成员进行比较,即使它们的结构和 名称完全相同。

    ⑥通常情况下,最好是在命名空间内直接定义枚举,以便该命 名空间中的所有类都能够同样方便地访问它。但是,还可以将 枚举嵌套在类或结构中。

    ⑦基础类型指定为每个枚举数分配的存储大小。但是,从 enum 类型到整型的转换需要用显式类型转换来完成。

    定义枚举类型变量的语法形式为:

    枚举类型名称 枚举变量名列表;
    enum WEEK{ MON,TUE,WED,THU,FRI,SAT,SUN} WEEK day;

    可以把枚举值赋给枚举类型变量,例如 day=WEEK.SUN;

    展开全文
  • 枚举类型定义和枚举变量的说明

    千次阅读 2019-09-24 01:56:18
    枚举的定义枚举类型定义的一般形式为: enum 枚举名{ 枚举值表 }; 在枚举值表中应罗列出所有可用值。这些值也称为枚举元素。 例如: 该枚举名为weekday,枚举值共有7个,即一周中的七天。凡被说明为weekday类型...
    .枚举的定义枚举类型定义的一般形式为:
     enum 枚举名{ 枚举值表 };

    在枚举值表中应罗列出所有可用值。这些值也称为枚举元素。

    例如:

    该枚举名为weekday,枚举值共有7个,即一周中的七天。凡被说明为weekday类型变量的取值只能是七天中的某一天。

    2.枚举变量的说明

    如同结构和联合一样,枚举变量也可用不同的方式说明,即先定义后说明,同时定义说明或直接说明。

    设有变量a,b,c被说明为上述的weekday,可采用下述任一种方式:

    enum weekday{ sun,mou,tue,wed,thu,fri,sat };
    enum weekday a,b,c;

    或者为:

    enum weekday{sun,mou,tue,wed,thu,fri,sat }a,b,c;

    或者为:

    enum {sun,mou,tue,wed,thu,fri,sat }a,b,c;

    11.10.2 枚举类型变量的赋值和使用

    枚举类型在使用中有以下规定:

    1.枚举值是常量,不是变量。不能在程序中用赋值语句再对它赋值。

    例如对枚举weekday的元素再作以下赋值:

    sun=5;
    mon=2;
    sun=mon;

    都是错误的。

    2.枚举元素本身由系统定义了一个表示序号的数值,从0开始顺序定义为0,1,2…。如在weekday中,sun值为0,mon值为1,…,sat值为6。
    【例11.10】
    main(){
        enum weekday
        { sun,mon,tue,wed,thu,fri,sat } a,b,c;
        a=sun;
        b=mon;
        c=tue;
        printf("%d,%d,%d",a,b,c);
    }
    
    说明:

    只能把枚举值赋予枚举变量,不能把元素的数值直接赋予枚举变量。如:

     a=sum;
     b=mon;

    是正确的。而:

    a=0;
    b=1;

    是错误的。如一定要把数值赋予枚举变量,则必须用强制类型转换。

    如:

     a=(enum weekday)2;

    其意义是将顺序号为2的枚举元素赋予枚举变量a,相当于:

     a=tue;

    还应该说明的是枚举元素不是字符常量也不是字符串常量,使用时不要加单、双引号。

    【例11.11】
    main(){
        enum body
        { a,b,c,d } month[31],j;
        int i;
        j=a;
        for(i=1;i<=30;i++){
          month[i]=j;
          j++;
          if (j>d) j=a;
        }
        for(i=1;i<=30;i++){
          switch(month[i])
          {
            case a:printf(" %2d  %c\t",i,'a'); break;
            case b:printf(" %2d  %c\t",i,'b'); break;
            case c:printf(" %2d  %c\t",i,'c'); break;
            case d:printf(" %2d  %c\t",i,'d'); break;
            default:break;
          }
        }
        printf("\n");
    }
    

    11.11类型定义符typedef

    C语言不仅提供了丰富的数据类型,而且还允许由用户自己定义类型说明符,也就是说允许由用户为数据类型取“别名”。类型定义符typedef即可用来完成此功能。例如,有整型量a,b,其说明如下:

     int a,b;

    其中int是整型变量的类型说明符。int的完整写法为integer,为了增加程序的可读性,可把整型说明符用typedef定义为:

    typedef int INTEGER

    这以后就可用INTEGER来代替int作整型变量的类型说明了。

    例如:

     INTEGER a,b;

    它等效于:

     int a,b;

    用typedef定义数组、指针、结构等类型将带来很大的方便,不仅使程序书写简单而且使意义更为明确,因而增强了可读性。

    例如:

    typedef char NAME[20]; 表示NAME是字符数组类型,数组长度为20。然后可用NAME 说明变量,如:

     NAME a1,a2,s1,s2;

    完全等效于:

     char a1[20],a2[20],s1[20],s2[20]

    又如:

      typedef struct stu
        { char name[20];
          int age;
          char sex;
        } STU;
    

    定义STU表示stu的结构类型,然后可用STU来说明结构变量:

    STU body1,body2;

    typedef定义的一般形式为:

    typedef 原类型名 新类型名

    其中原类型名中含有定义部分,新类型名一般用大写表示,以便于区别。

    有时也可用宏定义来代替typedef的功能,但是宏定义是由预处理完成的,而typedef则是在编译时完成的,后者更为灵活方便。

    转载于:https://www.cnblogs.com/SFHa/p/8779324.html

    展开全文
  • 枚举类型定义

    2014-01-23 00:31:42
    在程序设计中,有时会用到由若干个有限数据元素组成的...此时,可将这些数据集合定义枚举类型。因此,枚举类型是某类数据可能取值的集合,如一周内星期可能取值的集合为:  { Sun,Mon,Tue,Wed,Thu,Fri,Sat}  该集
    在程序设计中,有时会用到由若干个有限数据元素组成的集合,如一周内的星期一到星期日七个数据元素组成的集合,由三种颜色红、黄、绿组成的集合,一个工作班组内十个职工组成的集合等等,程序中某个变量取值仅限于集合中的元素。此时,可将这些数据集合定义为枚举类型。因此,枚举类型是某类数据可能取值的集合,如一周内星期可能取值的集合为:
    
      { Sun,Mon,Tue,Wed,Thu,Fri,Sat}
      该集合可定义为描述星期的枚举类型,该枚举类型共有七个元素,因而用枚举类型定义的枚举变量只能取集合中的某一元素值。由于枚举类型是导出数据类型,因此,必须先定义枚举类型,然后再用枚举类型定义枚举型变量。

     

      enum <枚举类型名> 
      { <枚举元素表> };
      其中:关键词enum表示定义的是枚举类型,枚举类型名由标识符组成,而枚举元素表由枚举元素或枚举常量组成。例如: 
      enum weekdays 
      { Sun,Mon,Tue,Wed,Thu,Fri,Sat };
      定义了一个名为 weekdays的枚举类型,它包含七个元素:Sun、Mon、Tue、Wed、Thu、Fri、Sat。在编译器编译程序时,给枚举类型中的每一个元素指定一个整型常量值(也称为序号值)。若枚举类型定义中没有指定元素的整型常量值,则整型常量值从0开始依次递增,因此,weekdays枚举类型的七个元素Sun、Mon、Tue、Wed、Thu、Fri、Sat对应的整型常量值分别为0、1、2、3、4、5、6。
      注意:在定义枚举类型时,也可指定元素对应的整型常量值。例如,描述逻辑值集合{TRUE、FALSE}的枚举类型boolean可定义如下:
      enum boolean 
      { TRUE=1 ,FALSE=0 };
      该定义规定:TRUE的值为1,而FALSE的值为0。
      而描述颜色集合{red,blue,green,black,white,yellow}的枚举类型colors可定义如下:
      enum colors 
      {red=5,blue=1,green,black,white,yellow};
      该定义规定red为5 ,blue为1,其后元素值从2 开始递增加1。green、black、white、yellow的值依次为2、3、4、5。此时,整数5将用于表示二种颜色red与yellow。通常两个不同元素取相同的整数值是没有意义的。
      枚举类型的定义只是定义了一个新的数据类型,只有用枚举类型定义枚举变量才能使用这种数据类型。 

      8.1.2枚举类型变量的定义

      定义枚举类型变量有三种方法,即:先定义类型后定义变量,定义类型的同时定义变量,直接定义变量,现介绍如下:
      1.先定义类型后定义变量
      格式: <枚举类型名> <变量1>〔,<变量2>,…,<变量n>〕;
      例如:enum colors 
      {red=5,blue=1,green,black,white,yellow};
      colors c1,c2;
      c1、c2 为colors类型的枚举变量。

      2.定义类型的同时定义变量

      格式:enum <枚举类型名> 
      { <枚举元素表> } <变量1>〔,<变量2>,…,<变量n>〕;
      例如:enum colors 
      {red=5,blue=1,green,black,white,yellow}c1,c2;

      3.直接定义枚举变量

      格式:enum 
      { <枚举元素表> } <变量1>〔,<变量2>,…,<变量n>〕;
      例如:enum 
      {red=5,blue=1,green,black,white,yellow} c1=red,c2=blue;
      由上例可以看出,定义枚举变量时,可对变量进行初始化赋值,c1的初始值为red,c2的初始值为blue。
     

      8.1.3 枚举类型变量的引用

      对枚举类型变量只能使用2类运算:赋值运算与关系运算。
      1.赋值运算
      C++中规定,枚举类型的元素可直接赋给枚举变量,且同类型枚举变量之间可以相互赋值。如:enum weekdays //定义星期日到星期六为枚举类型weekdays
    { Sun,Mon,Tue,Wed,Thu,Fri,Sat };
     void main ( void )
     { weekdays day1,day2; //定义两个枚举型变量day1、day2
      day1=Sun; //将元素Sun赋给枚举变量day1
      day2=day1; //枚举变量day1赋给day2
      cout<<day1<<endl; //输出day1的值,即Sun的序号0
     }
      该例定义了两个类型为weekdays的枚举类型变量day1与day2,这两个枚举型变量只能取集合 { Sun,Mon,Tue,Wed,Thu,Fri,Sat }中的一个元素,可用赋值运算符将元素Sun赋给day1。枚举变量day1的值可赋给同类枚举变量day2。注意:
      (1)不能用键盘通过"cin>>"向枚举变量输入元素值,例如:cin>>day1是错误的。因此,枚举变量的值只能通过初始化或赋值运算符输入。
      (2)可用"cout<<"输出枚举变量,但输出的是元素对应的序号值,而不是元素值。例如:cout<<day1; 用cout输出day1中元素Sun对应的序号值0,而不是元素Sun。

      2.关系运算
      枚举变量可与元素常量进行关系比较运算,同类枚举变量之间也可以进行关系比较运算,但枚举变量之间的关系运算比较是对其序号值进行的。例如:
      day1=Sun; //day1中元素Sun的序号值为0
      day2=Mon; //day2中元素Mon的序号值为1
      if (day2>day1) day2=day1; //day2>day1的比较就是序号值关系式:1>0的比较
      if (day1>Sat) da1=Sat; //day1>Sat的比较就是序号值关系式:0>6的比较
      day2与day1的比较,实际上是其元素Mon与Sun序号值1与0的比较,由于1>0成立,所以day2>day1条件为真,day2=day1=Sun。同样由于day1中元素Sun的序号值0小于Sat的序号值6,所以day1>Sat条件为假,day1的值不变。
      

      【例8.1】先定义描述6种颜色的枚举类型colors,然后再用该枚举类型定义枚举数组,任意输入6个颜色号,转换成对应的颜色枚举量后输入到枚举数组中,最后输出枚举数组中对应的颜色。 
     # include <iostream.h>
     # include <stdlib.h> //使用exit(0)函数时必须包含stdlib.h头文件
     enum colors //定义有6种颜色元素的枚举类型colors
     { red, blue,green,black,white,yellow };
     void main( void)
     { colors color[6]; //定义枚举类型数组color[6]
      int j,n;
      cout<<"0:red,1:blue,2:green,3:black,4:white,5:yellow"<<endl;
      cout<<" 请输入6个颜色号:";
      for (j=0;j<6;j++)
       { cin >> n; //输入颜色号 
        if (n<0 || n>5 ) 
        { cout << "输入颜色值出错,请重新输入!";
         exit(0);
         }
        else
       switch(n) //将颜色号转换成颜色元素存入数组
        { case 0 : color[j]=red; break;
         case 1 : color[j]=blue; break;
         case 2 : color[j]=green ; break;
         case 3 : color[j]=black; break;
         case 4 : color[j]=white; break;
         case 5 : color[j]=yellow; break;
        }
         }
       for (j=0 ;j<6;j++) //循环6次,输出数组元素对应的颜色
         { switch (color[j])
          { case red : cout <<"red" ; break;
           case blue: cout<<"blue" ; break;
           case green : cout <<"green" ; break;
           case black : cout<<"black" ; break;
           case white : cout <<"white" ; break;
           case yellow :cout <<"yellow" ; break;
          }
         cout<<'/t';
         }
        cout<<'/n';
      }
      程序执行时,屏幕提示:
      0:red,1:blue,2:green,3:black,4:white,5:yellow
      请输入6个颜色号:0 1 2 3 4 5 
      屏幕输出:red blue green black white yellow
      由于无法通过键盘直接向枚举变量输入枚举元素值,所以程序中只能先输入枚举元素的序号值,然后用开关语句将序号值转换为元素值,并将元素值赋给枚举数组元素。同样,由于用cout无法输出枚举数组中元素值,所以在输出时,只能用开关语句判断输出哪一个元素,然后用cout<<"元素"方式输出对应的元素值。

      【例8.2】定义一个描述三种颜色的枚举类型{red、blue、green},输出这三种颜色的全部排列结果。
     解:这是三种颜色的全排列问题,用穷举法即可输出三种颜色的全部27种排列结果。
     # include <iostream.h>
     enum colors
     {red , blue,green};
     void show(colors color)
     { switch(color)
      { case red : cout<<"red";break; 
      case blue : cout<<"blue";break;
      case green : cout<<"green";break;
      }
      cout<<'/t';
     }
     void main(void)
     { colors col1,col2,col3;
      for(col1=red ;col1<=green;col1=colors(int (col1) +1))
      for(col2=red ;col2<=green;col2=colors(int (col2) +1))
      for(col3=red ;col3<=green;col3=colors(int (col3) +1))
      { show(col1);
       show(col2);
       show(col3);
       cout<<'/n';
      }
     }
      程序通过三重循环穷举出三种颜色所有的组合。for循环语句中,用枚举变量col1为循环变量,col1取值从red开始到green为止,循环变量的自加操作是通过表达式col1=colors(int (col1) +1) 来实现的,表达式中,先将col1转换成整数,然后加1,再转换成colors类型的枚举值赋给col1变量。

    展开全文
  • 枚举类型常用于定义常量类型优势:·类型安全·紧凑有效的数据定义·可与其他程序交互·运行效率高一般以内部类形式存在,枚举类型的构造方法一般以private修饰。通俗定义方法:public enum 类名{ 常量名.... }...

    枚举类型常用于定义常量

    类型优势:
    ·类型安全
    ·紧凑有效的数据定义
    ·可与其他程序交互
    ·运行效率高

    一般以内部类形式存在,枚举类型的构造方法一般以private修饰。

    通俗定义方法:

    public enum 类名{

         常量名....

      }
    枚举类型常用方法:

    1. 枚举类型名称.valuse()         //该方法用于返回枚举类型成员,*以数组的形式*。

    2. 枚举类型名称.valueOf()        //该方法用于将普通字符串转化为枚举实例。取数组某位即表示为枚举类型名称.valueOf()[int]

    3. 枚举对象.compareTO(枚举对象)  //比较两个枚举实例,返回值为正值代表方法参数在调用对象之前,0代表相同,负值代表在之后。

    4. 枚举对象.ordinal()           //得到成员位置引索

    5.枚举类型成员内部可直接定义方法,枚举类型同样也可以实现接口。

    例如:

       interface d{
          public String getConstants();
       }//定义接口及陈述方法
       public enum Enum implements d{
          Constants_A{
            public String getConstants(){
               return("我是枚举元素A");  
          }
         }  
       },
          Constants_B{
            public String getConstants(){
               return("我是枚举元素B");  
          }
         }  
       }
    //主方法省略

    展开全文
  • 定义枚举类型Weekday,使用枚举类型配合switch语句,尝试如下功能: wd = Mon是输出“Do Monday work”,wd = Tue时,输出“Do Monday work”,以此类推,当wd不为枚举值元素值时输出“I don`t know which is day”...
  • 枚举的声明形式 第一种 静态变量 第二种 含一个值 第三种-重点关注里面包含的静态方法 第四种 整形举例 测试方法-调用第三种 结果 枚举的声明形式 本文价值最高的是第三种 举例 第一种 静态变量 public ...
  • 枚举类型定义和应用

    千次阅读 2013-08-25 11:03:47
    如果一种变量只有几种可能的值,可以定义枚举类型。所谓“枚举类型”是将变量的值一一列举出来,变量的值只能在列举出来的值的范围内。 声明: 声明枚举类型用enum开头,例如: enum weekday{sun,mon,tue,wed,thu,...
  • 深入理解Java枚举类型(enum)

    万次阅读 多人点赞 2017-05-13 18:27:14
    【版权申明】未经博主同意,谢绝转载!(请尊重原创,博主保留追究权) ... 出自【zejian的博客】 关联文章: 深入理解Java类型信息...深入理解Java枚举类型(enum) 深入理解Java注解类型(@Annotation) 深入理解
  • 枚举类型可以被赋值,但其赋值不同于普通变量,主要为以下两点:1. 非枚举类型值赋值给枚举类型>需要借助类型强制转换>举例:typedef enum{Monday = 1, //将枚举类型的第一个变量置为1, 则后面的依次为2, 3, 4...
  • 枚举类型的使用和定义

    万次阅读 多人点赞 2019-04-17 11:07:33
    枚举类型定义 enum<类型名>{枚举常量表} typedef enum<类型名>{枚举常量表}类型别名; enum<类型名>{枚举常量表} 枚举变量名; //有时甚至可以省略类型名 enum {枚举常量表} 枚举变量名; 枚举...
  • 枚举定义

    2015-09-12 13:30:34
    枚举类型定义的枚举变量只能取集合中的某一元素值。由于枚举类型是导出数据类型,因此,必须先定义枚举类型,然后再用枚举类型定义枚举型变量。    enum  { };  其中:关键词enum表示定义的是枚举...
  • 成员可以是其他已定义结构体的类型,但不能是自己结构体的类型,可以是自己结构体的指针。定义结构体变量:struct 结构体名 结构体变量名  结构体的引用 必须在定义结构体变量之后进行,通过.运算符。如果某个成员...
  • 枚举类型

    2016-05-10 08:53:09
    枚举类型定义是以enum关键字开头,然后是枚举数据类型的名称,而后是一系列值,它们定义了可以给该类型指派的所有允许的值。 定义: 一般形式为:enum 枚举名 {枚举元素1,枚举元素2…}; 例:enum ILikeIdols ...
  • 单例的枚举实现在《Effective Java》中有提到,因为其功能完整、使用简洁、无偿地提供了序列化机制、在面对复杂的序列化或者反射攻击时仍然可以绝对防止多次实例化等优点,单元素枚举类型被作者认为是实现...
  • 枚举类型定义中没有指定元素的整型常量值,则整型常量值从0开始依次递增,因此,weekdays枚举类型的七个元素Sun、Mon、Tue、Wed、Thu、Fri、Sat对应的整型常量值分别为0、1、2、3、4、5、6。  注意:在定义枚举...
  • using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace _2._3._2 {  enum MyEn { a = 101, b, c = 207, d, e, f, g };  class Program ... 
  • 枚举类型详解

    2018-01-27 15:43:29
    一、枚举类型的定义 enum 类型名 {枚举值表}; 类型名是变量名,指定枚举类型的名称。 枚举值表也叫枚举元素列表,列出定义的枚举类型的所有可用值,各个值之间用...1.枚举类型定义与变量声明分开 如: enum Sui
  • 一、声明共用体类型,定义枚举常量 方法 1 enum weekdays {Monday, Tuesday, Wednesday, Thursday, Friday}; weekdays day;...enum weekdays {Monday, Tuesday,...枚举类型内容 Monday Tuesday Wednesday...
  • 1.  enum direction{ east, south, west, north }; 使用枚举类型: enum direction dir; dir = north; 定义类型时可以自由给各个元素赋值,赋值可以重复:
  • 定义枚举类型带有byte 的作用

    千次阅读 2019-04-15 11:22:14
    定义枚举类型带有byte 的作用 public enum Icon_Type : byte { /// <summary> /// 操作成功 /// </summary> Ok, /// <summary> /// 操作标示 /// <...
  • 枚举类型enum用法

    千次阅读 2020-09-24 22:08:25
    用户通常利用枚举类型定义程序中需要使用的一组相关的符号常量。枚举类型的定义格式为: enum <枚举类型名> {<枚举表>}; 它是一条枚举类型定义语句,该语句以enum保留字开始,接着为枚举类型名,它是...
  • 例子 写个小东西,刚好用到枚举类型,需要显示在DropDownList控件中...比如定义了一个错误的枚举类型 1 public enum eErrorDetailCode 2 { 3 登陆成功 = 0, 4 登出 = 1, 5 应用错误 = 2, 6 成功 = 16, 7 ...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 125,093
精华内容 50,037
关键字:

对枚举类型定义的元素