本文共 1961 字,大约阅读时间需要 6 分钟。
枚举的使用方法类似结构,但是不需要为每个变量制定变量类型。
枚举的使用范围,主要是用来给某一个状态赋值,例如,星期一到星期日,通过枚举,可以分别赋值1、2、3、4、5、6、7,这样在使用的时候,可以直接调用星期x这个名字,便自动调用相应的变量。
枚举的格式为:
enum 枚举名{枚举成员1,枚举成员2,……};
上代码:
#includeint 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/