精华内容
下载资源
问答
  • 什么是枚举

    2016-12-15 22:20:52
    如果把这些量说明为整型,字符或其它类型显然不妥当的。为此,C语言提供了一种称为“枚举”的类型。在“枚举类型的定义中列举出所有可能的取值,被说明为该“枚举类型的变量取值不能超过定义的范围。应该...
    枚举类型
    在实际问题中,有些变量的取值被限定在一个有限的范围内。例如,一个星期内只有七天,一年只有十二个月,一个班每周有六门课程等等。如果把这些量说明为整型,字符型或其它类型显然是不妥当的。为此,C语言提供了一种称为“枚举”的类型。在“枚举”类型的定义中列举出所有可能的取值,被说明为该“枚举”类型的变量取值不能超过定义的范围。应该说明的是,枚举类型是一种基本数据类型,而不是一种构造类型,因为它不能再分解为任何基本类型。
    11.10.1 枚举类型的定义和枚举变量的说明
    1. 枚举的定义枚举类型定义的一般形式为:
    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");
    }
    展开全文
  • 枚举类型enum详解

    2020-06-14 10:54:04
    概述 enum是C语言中的一个关键字,enum叫枚举数据类型,枚举数据类型描述的是一组整型值的集合(这句话其实不太妥当),因为枚举类型是一种基本数据类型,而不是一种构造...枚举型是预处理指令#define的替代,枚举和

    概述

    enum是C语言中的一个关键字,enum叫枚举数据类型,枚举数据类型描述的是一组整型值的集合(这句话其实不太妥当),因为枚举类型是一种基本数据类型,而不是一种构造类型,它不能再分解成什么基本类型。
    好像可以把int型的数据直接赋值给enum变量,实际上是不行的,需要进行强制类型转换,C语言提供了一种称为“枚举”的类型,其中一个枚举常量的占的字节数为4个字节,恰好和int类型的变量占的字节数相同,假设把这些枚举常量说明为整型,字符型或其他类型显然是不妥当的

    枚举型是预处理指令#define的替代,枚举和宏其实非常类似,宏在预处理阶段将名字替换成对应的值,枚举在编译阶段将名字替换成对应的值,

    格式

    我们可以将枚举理解为编译阶段的宏,使用格式:

    enum typeName{ valueName1, valueName2, valueName3, ...... };
    
    

    typeName是枚举类型的名字,花括号里面的元素(枚举成员)是常量而不是变量,这个一定要搞清楚,因为枚举成员的是常量,所以不能对它们赋值,只能将它们的值赋给其他的变量

    枚举类型(枚举标签)、枚举成员(枚举常量)、枚举变量

    在这里插入图片描述

    当枚举类型和枚举变量放在一起定义时,枚举类型的名字(就是enum week中的week)可以省略不写

    这一点其实和结构体中的无名结构很相似,虽然定义枚举类型变量和定义结构类型变量看起来很相似,但是两者的区别还是蛮大的,一个结构体类型变量里面包含若干个成员,相当于一个打包好的快递盒子,

    而枚举类型变量就不一样了,枚举类型变量不是一个包含若干个成员的集合,枚举类型变量和int、char类型的变量其实差不多,只不过枚举类型变量的赋值只能用自身的枚举成员来赋值,以上面的例子来说,

    num的赋值就只能用枚举成员Mon、Tues、Wed、Thurs,而不能用其他枚举类型的枚举成员来赋值

    定义

    enum week{Mon = 1, Tues, Wed, Thurs}num;

    enum week{Mon = 1, Tues, Wed, Thurs};
    enum week num;

    特点

    enum week{Mon, Tues, Wed, Thurs, Fri, Sat, Sun};
    printf("Mon=%d\nTues=%d\nWed=%d\nThurs=%d\nFri=%d\nSat=%d\nSun=%d\n", Mon, Tues, Wed, Thurs, Fri, Sat, Sun);
    

    在没有显示说明的情况下,枚举常量(也就是花括号中的常量名)默认第一个枚举常量的值为0,往后每个枚举常量依次递增1,所以Mon=0,Tues=1,····Sun=6,下面来验证一下

    (显示说明部分枚举常量的值):

    enum week{Mon = 1, Tues, Wed, Thurs, Fri, Sat, Sun};
    

    上面的代码中,只显式说明了枚举常量Mon的值为1,未指定的枚举名的值将依着最后一个指定值向后依次递增(注意是最后一个指定值)

    总结

    1、在没有显示说明的情况下,枚举常量(也就是花括号中的常量名)默认第一个枚举常量的值为0,往后每个枚举常量依次递增1

    2、在部分显示说明的情况下,未指定的枚举名的值将依着之前最有一个指定值向后依次递增

    3、一个整数不能直接赋值给一个枚举变量,必须用该枚举变量所属的枚举类型进行类型强制转换后才能赋值

    4、同一枚举类型中不同的枚举成员可以具有相同的值

    5、同一个程序中不能定义同名的枚举类型,不同的枚举类型中也不能存在同名的枚举成员(枚举常量)

    enum与typedef配合使用

    typedef enum week{Mon = 1, Tues, Wed, Thurs}WEEK;
    typedef enum{Mon = 1, Tues, Wed, Thurs}WEEK;
    

    REF
    https://www.cnblogs.com/lanhaicode/p/10620028.html

    展开全文
  • 数据类型枚举

    千次阅读 2016-10-22 10:46:17
    枚举枚举是基本数据类型的一种枚举类型/*下面的语句为枚举类型的宏声明,并不分配内存空间*/ enum name{ a,//a只存在编译器中,int常量?或许在只读段? b, c };枚举成员 枚举成员只存在编译器中,并不分配内存? ...

    枚举

    枚举是基本数据类型的一种


    枚举类型

    /*下面的语句为枚举类型的宏声明,并不分配内存空间*/
    enum name{
        a,//a只存在编译器中,是int型常量?或许在只读段?
        b,
        c
    };

    枚举成员

    1. 枚举成员只存在编译器中,并不分配内存?
    2. 枚举成员为int型常量
    3. 只能在枚举类型声明(?定义)的时候初始化
      • 为什么声明的时候分配了空间?难道说就只有枚举不一样?
    4. 如果不初始化,第一个成员初始化为0,后面的依次加1
    5. 某个成员变量初始化,后面的依次加1

    枚举类型变量

    1. 变量可以被赋值为成员?
      • 变量就是要赋值为成员,表示变量只能从成员中取值,这正是枚举类型的作用
    2. 变量可以被赋值为整型常量,为什么?
      • 赋值为枚举成员以外的常量是无意义的,如果该常量有必要存在,那么可以将该常量写为枚举成员
      • 如果说变量可以赋值为枚举成员以外的常量,表明编译器没有做语法检查.有些编译器是不允许的

    枚举类型变量的使用

    • 被赋值为枚举成员

    枚举成员存在的原因

    1. 可以快速定义一些常量,且部分可以不用初始化(使用默认初始化)
      • 除此之外,可以用typedef和define
    2. 给变量提供一个取值范围

    展开全文
  • JavaScript中enum(枚举类型是什么? JavaScript中是没有枚举类型的,除了JavaScript以外的语言都有enum这个关键词,但为了在JavaScript中使用枚举变量,我们必须自己创建它。 下面我们就来看如何在JavaScript中...
  • enum枚举型变量的使用

    千次阅读 2010-09-17 14:43:00
    举个例子来说明一吧,为了让大家更明白一点,比如一个铅笔合中有一支笔,但在没有打开之前你并不知道它是什么笔,可能是铅笔也可能是钢笔,这里有两种可能,那么你就可以定义一个枚举类型来表示它! enum box{...

           如果一个变量你需要几种可能存在的值,那么就可以被定义成为枚举类型。之所以叫枚举就是说将变量或者叫对象可能存在的情况也可以说是可能的值一一例举出来。

           举个例子来说明一吧,为了让大家更明白一点,比如一个铅笔合中有一支笔,但在没有打开之前你并不知道它是什么笔,可能是铅笔也可能是钢笔,这里有两种可能,那么你就可以定义一个枚举类型来表示它!

           enum box{pencil,pen};//这里你就定义了一个枚举类型的变量叫box,这个枚举变量内含有两个元素也称枚举元素在这里是pencil和pen,分别表示铅笔和钢笔。


           在这里要说一下,如果你想定义两个具有同样特性枚举类型的变量那么你可以用如下的两种方式进行定义!

    enum box{pencil,pen};

    enum box box2;//或者简写成box box2;


           再有一种就是在声明的时候同时定义。

    enum {pencil,pen}box,box2; //在声明的同时进行定义!


           枚举变量中的枚举元素系统是按照常量来处理的,故叫枚举常量,他们是不能进行普通的算术赋值的,(pencil=1;)这样的写发是错误的,但是你可以在声明的时候进行赋值操作!

       enum box{pencil=1,pen=2};


           但是这里要特别注意的一点是,如果你不进行元素赋值操作那么元素将会被系统自动从0开始自动递增的进行赋值操作,说到自动赋值,如果你只定义了第一个那么系统将对下一个元素进行前一个元素的值加1操作,例如

    enum box{pencil=3,pen};//这里pen就是4系统将自动进行pen=4的定义赋值操作!

     


    文章出处:飞诺网(www.firnow.com):http://dev.firnow.com/course/3_program/c++/cppjs/2008727/134149.html

    展开全文
  • [JAVA] 枚举型使用方法

    2015-04-14 13:36:40
    最近跟同事讨论问题的时候,突然同事提到我们为什么java 中定义的常量值不采用enmu 枚举类型,而采用public final static 类型来定义呢?以前我们都采用这种方式定义的,很少采用enum 定义,所以也都没有注意...
  • 枚举类型的初始值问题

    千次阅读 2018-12-17 22:10:03
    的的初始化规则是什么? 首先记住两点: 1、内置类型变量(int,bool,指针等)的初始化规则 在函数体外(全局)定义的内置类型变量会自动初始化0,函数体内定义的内置类型变量不会初始化。类里面定义的内置类型...
  • 枚举类型几点注意

    2013-02-27 23:27:00
    1.枚举的作用:限制用户不能随意赋值,只能在定义枚举时列举的值中选取; 不需要死记硬背每一个值是什么,只需选择相应的值。 注意:定义枚举时,值不能为int型。...把字符串转换为枚举型: (自枚)(Enum.Parse(...
  • 枚举和define有什么区别

    千次阅读 2017-03-01 23:46:24
    两者只有恨小的区别,在C语言中,枚举为整型,枚举常量为int,因此它们都可以和其他整型类别混用而不会出错,而且枚举优点众多;能自动赋值;调试器在检验枚举变量时,可以显示符号值;服从数据块作用域规则。具体...
  • 一步步构造int型枚举

    2011-05-18 15:41:00
    在Java 1.5之前,我们经常会把类型、状态、性别等取值范围很小而且比较固定的数据存储为int常量,在枚举类型出现之前,大家都不会觉得有什么不便,然而在枚举类型出现之后,这种方式的缺点就明显了,一个不可...
  • -----------android培训、java培训、java+3G学习技术...",有这个疑问就说明你已经摸索到了枚举类型的最主要功能:以统一命名的常量来替换变化无常的直接量,这毫无疑问是枚举的最主要作用,在大多数情况下,用stati
  • 什么是包装类?如何使用? 包装类将基本数据类型类型变成引用类型的,其中包含方法可以进行各种数据类型和String类型的相互转换 基本数据类型—>String String.valueOf(任何类型数据) String–>基本 基本...
  • 从模拟字符串枚举说起 [C#] Written by Allen Lee ...枚举的成员类型数值的,如果想做一个字符枚举什么办法? enumcolors:string{red='#ff0000',} 在展开讨论之前,我认为有必要搞...
  •  ,编译器会根据上下文来判断你到底想用什么类型,类似OBJECT,但是效率比OBJECT高点。我们可以赋予局部变量推断“类  ”var而不是显式类型。var 关键字指示编译器根据初始化语句右侧的表达式推断变量的...
  • 枚举

    2017-12-29 10:36:57
    常量也不仅仅局限于int,诸如char和String等也不在少数。然而,无论使用什么样的类型,这样做都有很多的坏处。这些常量通常都连续、有无穷多个值的量,而类似这种表示类别的量则离散的,并且通常情况下只有...
  • 自定义数据类型 结构体 枚举 typedef

    千次阅读 2016-01-11 11:14:12
    一、什么是结构体 当一个整体由多个数据构成时,我们可以用数组来...据都具有不同的类型,姓名可以字符串类型,年龄可以整型,身高可以浮点。  为此,C语言专门提供了一种构造类型来解决上述问题,这就是结构
  • 枚举(Enum)

    2019-07-14 18:57:47
    什么是枚举? 枚举指的是在一定范围内取值,这个值必须是枚举类型中的任意一个,...枚举型是一个集合,集合中的元素(枚举成员)是一些命名的整型常量,元素之间用逗号,隔开。 同一个程序中不能定义同名的枚举类型...
  • C语言——枚举

    2021-05-24 14:14:43
    一、什么是枚举 在实际问题中,有些变量的取值被限定在一个有限的范围内。例如,一个星期内只有七天,一年只有十二个月,一个班每周有六门课程等等。如果把这些量说明为整型,字符或其它类型显然不妥当的。为此...
  • 从模拟字符串枚举...UK 在《关于枚举的种种》中提到这样一个问题:枚举的成员类型数值的,如果想做一个字符枚举什么办法? enum colors : string{ red=#ff0000, }在展开讨论之前,我认为有必要
  • 今天复习的时候,发现了一个一直忽略的问题,就是java语言中switch(x)语句...其实,x 准确的说,数值的只可以 int 类型,但是 byte, short, char 都可以自动转换成 int 类型,所以 x 也可以byte, short, char
  • 枚举和结构体

    热门讨论 2019-03-30 10:07:21
    一,枚举:只要用于赋值,枚举默认类型为int 1,格式:枚举名 [名称自定义]=枚举名.[内容] 2,作用: 1,限制用户不能随意赋值,只能在定义枚举时列举的值选择 2,不需要死记每一个值是什么,直接通过“.”,...
  • C语言 | 枚举概述

    2021-05-10 09:18:40
    枚举变量和其他数值量不同,它们的值只限于花括号中指定的值之一,枚举常量由程序设计者命名的,用什么名字代表什么含义,完全由程序员根据自己的需要而定,并在程序中作相应处理。 一般形式 enum[枚举名]{枚举...
  • 【c#】枚举

    热门讨论 2017-09-29 15:37:37
    道口类型在数据库里存的int的数字,从界面上传过来的具体的中文含义。所以我定义了一个道口的枚举,同事传过来的中文,后台接收到以后,会把对应的中文含义转换成对应的int数字,再跟数据库进行交互。这只是...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 441
精华内容 176
关键字:

枚举型是什么类型