枚举类型变量(用枚举型常量怎么定义变量)
本文目录
用枚举型常量怎么定义变量
enum day{sunday,monday,tuesday,wendsday,thursday,friday,stadurday};
这句定义了符号化的常量sunday,monday等等。在下面的程序中,可以声明枚举型变量day today,对其赋值,或者判断它的值。
定义枚举型的好处主要有二,首先增强程序可读性,sunday、monday肯定比0,1容易理解;其次可以对变量类型与取值进行限定。
枚举型常量即某种枚举型的合法取值,此例中,sunday,monday,tuesday,wendsday,thursday,friday,stadurday是枚举型常量。在编译时确定各个常量的对应值。枚举型变量指的是声明为已定义枚举类型的变量。如此例中的today。
枚举型的定义四种基本数据类型,可以用来表达数,字符,真假的描述。但我们还是觉得有点缺欠:它们不能方便地进行一些标识符的描述,如:红,橙,黄,绿,青,蓝,紫七种颜色,要在数据类型中要把它们直接表达出来,我们觉得有障碍。
而在计算机内有没有这种数据类型,能够很方便地将它们表示出来?有,枚举型能办到。用四种基本数据类型不便表示的标识符,而且这些标识符的数量是有限的,我们可以用枚举的方法来表达它,把要用的所有标识符全部枚举出来。这种方法比较接近自然语言的表达。
枚举和注解都是在Java1.5中引入的,虽然他们是后起之秀,但是功能不容小觑,枚举改变了常量的声明方式,注解耦合了数据和代码.
建议83:推荐使用枚举定义常量
分析
常量的声明是每一个项目中不可或缺的,在Java1.5之前,我们只有两种方式的声明:类常量和接口常量。不过,在1.5版之后有了改进,即新增了一种常量声明方式,枚举常量。代码如下:
1 enum Season{
2 Spring,Summer,Autumn,Winter;
3 }
JLS(Java Language Specification,Java语言规范)提倡枚举项全都大写,字母之间用下划线分隔.这也是从常量的角度考虑的.
“枚举类型”与“枚举变量”有什么区别
用type类型定义的变量,拥有自己的成员,类似于一个小型的类(只不过没有事件和方法而已)。可以用“变量名.成员名”访问成员枚举类型就相当于一组常量,即一组用const定义的量,为了便于组织才使用枚举类型。不过枚举类型的变量也可以用“变量名.常量名”访问
枚举类型的变量是在哪儿里定义的
enum枚举名{枚举值表};在枚举值表中应罗列出所有可用值。这些值也称为枚举元素。例如:enumweekday{sun,mou,tue,wed,thu,fri,sat};该枚举名为weekday,枚举值共有7个,即一周中的七天。凡被说明为weekday类型变量的取值只能是七天中的某一天。
如何定义一个枚举型变量
你可以查找和阅读课文。这里不好开课。简单的定义例子如下:类型定义: enum DAY { MON=1, TUE, WED, THU, FRI, SAT, SUN };变量声明 enum DAY yesterday;变量声明 enum DAY today;变量声明 enum DAY tomorrow;类型定义 + 变量声明: enum week { Mon=1, Tue, Wed, Thu, Fri Sat, Sun} days; //变量days的类型为枚举型enum week
c++枚举变量类型
枚举类型(enumeration)是C++中的一种派生数据类型,它是由用户定义的若干枚举常量的集合。定义格式:枚举类型的定义格式为:enum 《类型名》 {《枚举常量表》};其中:关键字enum——指明其后的标识符是一个枚举类型的名字。枚举常量表——由枚举常量构成。“枚举常量”或称“枚举成员”,是以标识符形式表示的整型量,表示枚举类型的取值。枚举常量表列出枚举类型的所有取值,各枚举常量之间以“,”间隔,且必须各不相同。取值类型与条件表达式相同。应用举例:enum color_set1 {RED, BLUE, WHITE, BLACK}; //定义枚举类型color_set1enum week {Sun, Mon, Tue, Wed, Thu, Fri, Sat}; //定义枚举类型week重要提示:枚举常量代表该枚举类型的变量可能取的值,编译系统为每个枚举常量指定一个整数值,缺省状态下,这个整数就是所列举元素的序号,序号从0开始。可以在定义枚举类型时为部分或全部枚举常量指定整数值,在指定值之前的枚举常量仍按缺省方式取值,而指定值之后的枚举常量按依次加1的原则取值。各枚举常量的值可以重复。例如:enum fruit_set {apple, orange, banana=1, peach, grape}//枚举常量apple=0,orange=1, banana=1,peach=2,grape=3。enum week {Sun=7, Mon=1, Tue, Wed, Thu, Fri, Sat};//枚举常量Sun,Mon,Tue,Wed,Thu,Fri,Sat的值分别为7、1、2、3、4、5、6。枚举常量只能以标识符形式表示,而不能是整型、字符型等文字常量。例如,以下定义非法:enum letter_set {’a’,’d’,’F’,’s’,’T’}; //枚举常量不能是字符常量enum year_set{2000,2001,2002,2003,2004,2005}; //枚举常量不能是整型常量可改为以下形式则定义合法:enum letter_set {a, d, F, s, T};enum year_set{y2000, y2001, y2002, y2003, y2004, y2005};枚举变量的使用定义枚举类型的主要目的是:增加程序的可读性。枚举类型最常见也最有意义的用处之一就是用来描述状态量,这点将在第9章 输入输出流类看到。定义格式:定义枚举类型之后,就可以定义该枚举类型的变量,如:color_set1 color1, color2;亦可类型与变量同时定义(甚至类型名可省),格式如下:enum {Sun,Mon,Tue,Wed,Thu,Fri,Sat} weekday1, weekday2;相关操作枚举变量的值只能取枚举常量表中所列的值,就是整型数的一个子集。枚举变量占用内存的大小与整型数相同。枚举变量只能参与赋值和关系运算以及输出操作,参与运算时用其本身的整数值。例如,设有定义:enum color_set1 {RED, BLUE, WHITE, BLACK} color1, color2;enum color_set2 { GREEN, RED, YELLOW, WHITE} color3, color4;则允许的赋值操作如下:color3=RED; //将枚举常量值赋给枚举变量color4=color3; //相同类型的枚举变量赋值,color4的值为REDint i=color3; //将枚举变量赋给整型变量,i的值为1int j=GREEN; //将枚举常量赋给整型变量,j的值为0允许的关系运算有:==、《、》、《=、》=、!=等,例如://比较同类型枚举变量color3,color4是否相等if (color3==color4) cout《《”相等”;//输出的是变量color3与WHITE的比较结果,结果为1cout《《 color3《WHITE;枚举变量可以直接输出,输出的是变量的整数值。例如:cout《《 color3; //输出的是color3的整数值,即RED的整数值1应用举例【例2.24】 口袋中有红、黄、蓝、白、黑五种颜色的球若干个,每次从口袋中取三个不同颜色的球,统计并输出所有的取法。#include《iostream》#include《iomanip》using namespace std;int main(){enum color_set {red,yellow,blue,white,black};color_set color;int i,j,k,counter=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){ //第三个球不同于前两个,满足要求counter++;if((counter)%22==0){ //每屏显示22行cout《《“请按回车键继续“;cin.get();}cout《《setw(15)《《counter;/*下面输出每种取法,一行为一种取法的三个颜色*/for(loop=1;loop《=3;loop++){switch(loop){case 1: color=(color_set) i; break; //第一个是icase 2: color=(color_set) j; break; //第二个是jcase 3: color=(color_set) k; break; //第三个是k}switch(color){case red: cout《《setw(15)《《“red“; break;case yellow:cout《《setw(15)《《“yellow“;break;case blue: cout《《setw(15)《《“blue“; break;case white: cout《《setw(15)《《“white“; break;case black: cout《《setw(15)《《“black“; break;}}cout《《endl; //输出一种取法后换行}}cout《《“共有:“《《counter《《“种取法“《《endl;return 0;}重要提示枚举变量可以直接输出,但不能直接输入。如:cout 》》 color3; //非法不能直接将常量赋给枚举变量。如: color1=1; //非法不同类型的枚举变量之间不能相互赋值。如: color1=color3; //非法枚举变量的输入输出一般都采用switch语句将其转换为字符或字符串;枚举类型数据的其他处理也往往应用switch语句,以保证程序的合法性和可读性。
枚举类型究竟有什么用
枚举类型其实是整型,它的作用一是让数值看起来更直观二是圈定一个范围,是数值被限定在这个范围中。
1、 如果一个变量你需要几种可能存在的值,那么就可以被定义成为枚举类型。之所以叫枚举就是说将变量或者叫对象可能存在的情况也可以说是可能的值一一例举出来。
2、 举个例子来说明一下吧,为了让大家更明白一点,比如一个铅笔盒中有一支笔,但在没有打开之前你并不知道它是什么笔,可能是铅笔也可能是钢笔,这里有两种可能,那么你就可以定义一个枚举类型来表示它!
enum box{pencil,pen};//这里你就定义了一个枚举类型的变量叫box,这个枚举变量内含有两个元素也称枚举元素在这里是pencil和pen,分别表示铅笔和钢笔。
3、这里要说一下,如果你想定义两个具有同样特性枚举类型的变量那么你可以用如下的两种方式进行定义!
enum box{pencil,pen};
enum box box2;//或者简写成box box2;
再有一种就是在声明的时候同时定义。
enum {pencil,pen}box,box2; //在声明的同时进行定义!
枚举变量中的枚举元素系统是按照常量来处理的,故叫枚举常量,他们是不能进行普通的算术赋值的,(pencil=1;)这样的写法是错误的,但是你可以在声明的时候进行赋值操作!
enum box{pencil=1,pen=2};
4、但是这里要特别注意的一点是,如果你不进行元素赋值操作那么元素将会被系统自动从0开始自动递增的进行赋值操作,说到自动赋值,如果你只定义了第一个那么系统将对下一个元素进行前一个元素的值加1操作,例如
enum box{pencil=3,pen};//这里pen就是4系统将自动进行pen=4的定义赋值操作。
C语言中关于枚举类型
1.enum枚举的定义枚举类型定义的一般形式为: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;3、枚举类型变量的赋值和使用枚举类型在使用中有以下规定:a.枚举值是常量,不是变量。不能在程序中用赋值语句再对它赋值。例如对枚举weekday的元素再作以下赋值:sun=5;mon=2;sun=mon;都是错误的。b.枚举元素本身由系统定义了一个表示序号的数值,从0开始顺序定义为0,1,2…。如在weekday中,sun值为0,mon值为1,…,sat值为6。int 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);return 0;}说明:只能把枚举值赋予枚举变量,不能把元素的数值直接赋予枚举变量。如:a=sum;b=mon;是正确的。而:a=0;b=1;是错误的。如一定要把数值赋予枚举变量,则必须用强制类型转换。如:a=(enumweekday)2;其意义是将顺序号为2的枚举元素赋予枚举变量a,相当于:a=tue;还应该说明的是枚举元素不是字符常量也不是字符串常量,使用时不要加单、双引号。int main(){enum body{ a,b,c,d } month,j;int i;j=a;for(i=1;i《=30;i++){month){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“);return 0;}
更多文章:
spyder和python的关系(python和spyder的区别)
2025年3月28日 06:30
easypanel控制面板(CentOS6.2安装mysql5.5+kangle+easypanel怎么弄)
2025年3月13日 11:40
百度ueditor编辑器(百度ueditor编辑器如何显示、修改从数据库中的数据)
2025年2月27日 02:20
assemblyinfo(c#web怎么加入assemblyinfo cs)
2025年3月15日 02:20
similar怎么读(What is she like是什么意思)
2025年4月7日 12:40
positively什么意思(Positively-Radiant是什么意思)
2025年4月9日 22:50
c语言代码没错但运行不出来(C语言编译好后为什么运行不出结果呢)
2025年2月11日 16:50
oracle vm virtualbox官网(Oracle VM VirtualBox 启动报错求助)
2025年3月29日 02:40
comeback(come back和come back to的区别,具体举例子)
2025年2月21日 09:00
nobody歌曲(求一首英文歌 只记得 nobody no)
2025年3月17日 13:10
ignore什么意思中文(在英语单词中,ignore 这个单词是什么意思呢)
2025年3月26日 15:20