#include <iostream>;
#include <cmath>;
#include <string>;
#include <cstring>;
/*
枚举学习
*/
enum spectrum{red,orange,yellow,green,blue,violet,indigo,ultraviolet};
enum bits{one = 1, two = 2,four = 4,eight = 8};
enum bigstep{first,second = 100,third};
//只是用常量,而不创建枚举类型的变量
enum {zero,null = 0,love,numero_uno = 1};
int main(){
using namespace std;
spectrum band;
band = yellow;
cout << band << endl; //打印:2
band = red;
cout << band << endl; //打印 0
//++band; // not valid
//band = red + yellow; // not valid
int color = blue; //valid
cout << color << endl; //打印 4
//band = 3; // invalid;
color = red + 3; //valid
cout << color << endl; //打印 3
band = (spectrum)2; // valid
cout << band << endl; // 打印 2
band = (spectrum)2000; //不适当的值进行类型强转。
cout << band << endl;
//设置枚举变量的值
bits mbits;
mbits = one;
cout << mbits << endl; //打印 1
bigstep mbigstep;
mbigstep = third;
cout << mbigstep << endl; // 打印 101
int number = zero;
cout << number << endl; //打印 0
number = love;
cout << number << endl; //打印 1
cout << numero_uno << endl; //打印 1
/*
枚举的取值范围,
下面的代码中, 6不是枚举值,但它位于枚举的取值范围内。
*/
bits myflag;
myflag = (bits)6;
/*
枚举的取值范围,
找上限:先找到枚举量的最大值,然后找大于这个最大值得、最小的2的幂,然后减1便是上限。
例如 bigstep 中 最大枚举值是101 ,在2的幂中,比这个数大的最小值是 128 所以上限是127
找下限:如果枚举量的最小值不小于0, 那下限就是0 否则采用找上限的方法,但加上负号。
例如: 如果最小的枚举量是-6 比它小的、最大的2的幂是-8(加上负号),因此下限为 -7
*/
}