枚举:顾名思义就是将这个事务的所有都一一列举。例如:weekend有sun,mon,tue,wed,tus,fir,sta那么我们需要定义一下:
enum weekend{sun,mon,tue,wed,tus,fir,sta} a,b,c;
或enum weekend{sun,mon,tue,wed,tus,fir,sta};
enum weekend a,b,c;
因此我们可以抽象出表达式:enum 枚举名{ 枚举值也叫枚举元素} 枚举变量;
也可以是:enum 枚举名 {枚举值也叫枚举元素};
enum 枚举名 枚举变量;
其中:
1、枚举值是一个常数是不可改变的,即枚举元素是枚举常量,因此不能在声明时进行赋值,想要初始化则在定义时赋值,即enum pack{pencil=1,pen=2};如果未在定义时初始化那么默认是从0开始依次加1或者只初始化第一个,那么后面的都依次加1。
2、枚举变量也可以进行强制转换:
enum name {a,b,c} test;
test=a;//这里没有在定义时初始化说明从0开始,即test=0
想让test的值发生变化就用强制转换
test=(enum name)1;
下面用一段程序说明上面所要注意的地方:
#include <<SPAN style="COLOR: maroon">iostream> using namespace std; void main(void) { enum name {a,b,c}; enum name test; //在这里你可以简写成name test; test = c; //对枚举变量test进行赋予元素操作,这里之所以叫赋元素操作不叫赋值操作就是为了让大家明白枚举变量是不能直接赋予算数值的,例如(test=1;)这样的操作都是不被编译器所接受的,正确的方式是先进行强制类型转换例如(test= (enum name) 0;)。 if (test==c) { cout <<"枚举变量判断:test枚举对应的枚举元素是c" << endl; } if (test==2) { cout <<"枚举变量判断:test枚举元素的值是2" << endl; } cout << a << "|" << b << "|" << test <<endl; test = (enum name) 0;//强制类型转换 cout << "枚举变量test值改变为:" << test <<endl; cin.get(); }
3、其中的枚举元素也是可以变化的,例如
#include <<SPAN style="COLOR: maroon">iostream> using namespace std; void main(void) { enum test {a,b}; int c=1+b; //自动提升为算术类型 cout << c <<endl; cin.get(); }
4、枚举元素是枚举常量,写的时候不必加引号,直接写就行。例如:
printf(“%d”,test);
5、下面是用韵枚举的一个小程序,大家一起参考一下
#include using namespace std; int main() { enum body { a,b,c,d } month[31]; int i; for(i=1;i<=30;i++) { if(i%4==1) month[i]=a; if(i%4==2) month[i]=b; if(i%4==3) month[i]=c; if(i%4==0) month[i]=d; } for(i=1;i<=30;i++) { switch(month[i]) { case a:printf("- %c/t",i,'a'); break; case b:printf("- %c/t",i,'b'); break; case c:printf("- %c/t",i,'c'); break; case d:printf("- %c/t",i,'d'); break; default:break; } } printf("/n"); system("pause"); return 0; }
希望可以给大家提供帮助,与君共勉,谢谢大家!————水木轩