枚举类型的定义和应用
来源:互联网 发布:ajax循环遍历json数组 编辑:程序博客网 时间:2024/04/29 21:46
定义:
如果一种变量只有几种可能的值,可以定义为枚举类型。所谓“枚举类型”是将变量的值一一列举出来,变量的值只能在列举出来的值的范围内。
声明:
声明枚举类型用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;}
- 枚举类型的定义和应用
- 宏定义和枚举类型的区别
- 宏定义和枚举类型的区别
- 枚举类型的定义
- 枚举类型的定义
- enum 枚举类型定义常量及调用的应用举例
- 枚举类型的理解和应用
- 枚举类型的理解和应用
- 枚举类型的理解和应用
- 枚举类型的应用
- C#枚举类型的定义,说明和使用
- 用type定义的枚举类型和结构体
- Enum(枚举类型)的应用
- 黑马程序员:枚举类型的定义
- 枚举类型的抽象方法定义实现
- 【ExtJS】定义枚举类型的store
- 枚举的定义和用法
- 枚举的定义和使用
- 十大iPhone防盗应用
- Git 版本控制系統(3) 還沒 push 前可以做的事
- JBPM4框架小谈
- Git修改前一次提交的方法(特别注意保持Change-Id不变)
- 如何上传应用到百度应用(图解攻略)
- 枚举类型的定义和应用
- 生产者消费者问题分析
- CString、TCHAR*、char*转换
- 【数据挖掘】决策树之ID3算法
- mcisendstring相关知识
- WPF中DispatcherTimer定时器的原理
- 帧监听器
- HTTP协议详解
- 安卓之返回按钮