博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
(五十四)枚举
阅读量:7007 次
发布时间:2019-06-27

本文共 1961 字,大约阅读时间需要 6 分钟。

枚举的使用方法类似结构,但是不需要为每个变量制定变量类型。

枚举的使用范围,主要是用来给某一个状态赋值,例如,星期一到星期日,通过枚举,可以分别赋值1、2、3、4、5、6、7,这样在使用的时候,可以直接调用星期x这个名字,便自动调用相应的变量。

枚举的格式为:

enum 枚举名{枚举成员1,枚举成员2,……};

上代码:

#include 
int main(){ using namespace std; enum bi { a1st, a2nd, a3rd = 5, a4th, a5th = 6, a6th, a7th }; //声明枚举,其中第一个和第二个是默认的,第三个赋值5,第四个默认,第五个赋值6(和第四个同值),第六个默认,第七个默认 cout << "a1st=" << a1st << endl; //输出枚举第一个成员 cout << "a2nd=" << a2nd << endl; //输出枚举第二个成员 cout << "a3rd=" << a3rd << endl; //输出枚举第三个成员 cout << "a4th=" << a4th << endl; //输出枚举第四个成员 cout << "a5th=" << a5th << endl; //输出枚举第五个成员 cout << "a6th=" << a6th << endl; //输出枚举第六个成员 cout << "a7th=" << a7th << endl; //输出枚举第七个成员 bi abc; //声明abc为枚举bi类型的一个变量——即bi是类型名(枚举),abc是变量 abc = a5th; //给变量abc赋值,值只能为枚举bi内的成员,或者枚举bi取值范围内的值(存疑) cout << "abc = " << abc << endl; abc = bi(8); //再次给变量abc赋值,值为枚举取值范围内的值8 cout << "abc = bi(8) = " << abc << endl; //教程上说,给被枚举类型声明的变量取值时,只能包含取值枚举成员最大值的2的N次幂-1 的值。 //但经过实践测试,假如abc=bi(2000);这样远超于枚举bi最大值8所处的2的n次幂-1的最大范围,但依然能显示。 //因此,存在一定问题 //abc = 5; 类型为枚举bi的变量abc,不能被直接取值为5,必须为枚举范围内如bi(数值)这样的值 //cout << "abc = 5 =" << abc << endl; int aa = 1; //声明并初始化整型int的变量aa的值为1 aa = aa + abc; //变量aa=1+类型为枚举bi的变量abc的值 cout << "aa = 1 + abc = " << aa << endl; aa = a4th + a5th; //变量aa=枚举成员a4th和a5th的值之和 cout << "aa = a4th + a5th = " << aa << endl; system("pause"); return 0;}

输出:

a1st=0a2nd=1a3rd=5a4th=6a5th=6a6th=7a7th=8abc = 6abc = bi(8) = 8aa = 1 + abc = 9aa = a4th + a5th = 12

枚举的特点:

①在枚举的大括号里,填写成员名,可不填写值(将自动获取默认值);

②若在声明的时候,不给枚举的成员赋值,在第一个成员的默认值为0,后面的为前一个的值加1;

③在赋值的时候,枚举的成员的值,可以相同,可以不同,可以后面比前面大,也能小;

④无需给每个枚举的成员赋值,未赋值的成员,其值为前一个成员的值加1;

⑤不能在声明之后,再次给枚举的成员赋值——只能在声明的时候同时赋值;

⑥枚举bi作为类型名时,其变量只能通过枚举bi来赋值,不能被直接赋值,例如abc = bi(8);或abc = a5th;是可行的,但是abc = 5不可行的;

⑦枚举bi作为类型名时,其变量不能为枚举相加(或相减相乘)的算数结果。例如:abc = a4th + a5th;或abc = bi(4) + bi(5);是不可行的,有其他整型的数字参与在内,也是不可行的。例如:abc = a4th + 4;

⑧当int或者其他整型、浮点类型作为类型名时,其变量可以是枚举成员或者枚举范围值的算数结果。例如:double aabc = a4th + 4;是可行的。

⑨按照说明,枚举有最大取值范围,但实际操作下,例如abc=bi(1000);这样的也是可以输出结果1000的,这是为什么?

转载地址:http://pnftl.baihongyu.com/

你可能感兴趣的文章
NSCopying简析
查看>>
解决This system is not registered with RHN
查看>>
python抓取网络内容
查看>>
nginx(四)初识nginx日志文件
查看>>
poj1026(置换找循环节)
查看>>
[leetcode]Search for a Range
查看>>
leetcode - Merge Intervals
查看>>
Freertos之系统配置
查看>>
四年前从这里开始,四年后从这里继续-回归博客园
查看>>
Linux命令--删除软连接
查看>>
Nginx 错误汇总
查看>>
Maven将jar包放入本地库
查看>>
SnowNLP:一个处理中文文本的 Python 类库
查看>>
linux系统性能监视命令
查看>>
iOS: 悬浮的条件筛选下拉框的使用
查看>>
2016 SDCC会后总结
查看>>
学习ASP.NET Core, 怎能不了解请求处理管道[6]: 管道是如何随着WebHost的开启被构建出来的?...
查看>>
JAVA Eclipse的Android的进程和生命周期是什么
查看>>
Python的Django框架中的Context使用
查看>>
spark join
查看>>