(五十四)枚举

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

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

枚举的格式为:

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

上代码:


#include <iostream>

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=0
a2nd=1
a3rd=5
a4th=6
a5th=6
a6th=7
a7th=8
abc = 6
abc = bi(8) = 8
aa = 1 + abc = 9
aa = 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的,这是为什么?


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值