如果一个变量你需要几种可能存在的值,那么就可以被定义成为枚举类型。之所以叫枚举就是说将变量或者叫对象可能存在的情况也可以说是可能的值一一例举出来。
举个例子来说明一吧,为了让大家更明白一点,比如一个铅笔盒中有一支笔,但在没有打开之前你并不知道它是什么笔,可能是铅笔也可能是钢笔,这里有两种可能,那么你就可以定义一个枚举类型来表示它!
enumbox{pencil,pen};//这里你就定义了一个枚举类型的变量叫box,这个枚举变量内含有两个元素也称枚举元素在这里是pencil和pen,分别表示铅笔和钢笔。
这里要说一下,如果你想定义两个具有同样特性枚举类型的变量那么你可以用如下的两种方式进行定义!
enumbox{pencil,pen};
enumboxbox2;//或者简写成boxbox2;
再有一种就是在声明的时候同时定义。
enum{pencil,pen}box,box2;//在声明的同时进行定义!
枚举变量中的枚举元素系统是按照常量来处理的,故叫枚举常量,他们是不能进行普通的算术赋值的,(pencil=1;)这样的写发是错误的,但是你可以在声明的时候进行赋值操作!
enumbox{pencil=1,pen=2};
但是这里要特别注意的一点是,如果你不进行元素赋值操作那么元素将会被系统自动从0开始自动递增的进行赋值操作,说到自动赋值,如果你只定义了第一个那么系统将对下一个元素进行前一个元素的值加1操作,例如
enumbox{pencil=3,pen};//这里pen就是4系统将自动进行pen=4的定义赋值操作!
前面说了那么多,下面给出一个完整的例子大家可以通过以下的代码的学习进行更完整的学习!
#include<iostream>
usingnamespacestd;
voidmain(void)
{
enumegg{a,b,c};
enumeggtest;//在这里你可以简写成eggtest;
test=c;//对枚举变量test进行赋予元素操作,这里之所以叫赋元素操作不叫赋值操作就是为了让大家明白枚举变量是不能直接赋予算数值的,例如(test=1;)这样的操作都是不被编译器所接受的,正确的方式是先进行强制类型转换例如(test=(enumegg)0;)!
if(test==c)
{
cout<<"枚举变量判断:test枚举对应的枚举元素是c"<<endl;
}
if(test==2)
{
cout<<"枚举变量判断:test枚举元素的值是2"<<endl;
}
cout<<a<<"|"<<b<<"|"<<test<<endl;
test=(enumegg)0;//强制类型转换
cout<<"枚举变量test值改变为:"<<test<<endl;
cin.get();
}
看到这里要最后说一个问题,就是枚举变量中的枚举元素(或者叫枚举常量)在特殊情况下是会被自动提升为算术类型的!
#include<iostream>
usingnamespacestd;
voidmain(void)
{
enumtest{a,b};
intc=1+b;//自动提升为算术类型
cout<<c<<endl;
cin.get();
}
版权与免责声明
1、本站所发布的文章仅供技术交流参考,本站不主张将其做为决策的依据,浏览者可自愿选择采信与否,本站不对因采信这些信息所产生的任何问题负责。
2、本站部分文章来源于网络,其版权为原权利人所有。由于来源之故,有的文章未能获得作者姓名,署“未知”或“佚名”。对于这些文章,有知悉作者姓名的请告知本站,以便及时署名。如果作者要求删除,我们将予以删除。除此之外本站不再承担其它责任。
3、本站部分文章来源于本站原创,本站拥有所有权利。
4、如对本站发布的信息有异议,请联系我们,经本站确认后,将在三个工作日内做出修改或删除处理。
请参阅权责声明!