C/C++中的枚举类型
如果一个变量你需要几种可能的值,那么就可以定义成为枚举类型。之所以叫枚举就是说将变量或者对象可能存在的情况也可以说是可能存在的值一一列举出来。
enum box{pencil,pen};
这里就定义了一个枚举类型的变量叫box。
若果想定义两个具有同样特质的枚举类型变量那么可以
1. enum box{pencil,pen};
2. enum box,box2;(或者写成box,box2;)
还可以在声明的时候定义
enum {pencil,pen}box,box2;
枚举变量中的枚举元素系统是按照常量来处理的,故叫做枚举常量,因此他们是不能进行普通的算数赋值的, pencil = 1;这样写是错误的,可以在声明的时候进行赋值
enum box{pencil=1,pen=2};
这里特别的一点是,如果不进行元素赋值操作那么元素将会被系统自动从0开始递增进行赋值操作。
如:enum box{penci=3,pen};这里的pen就是4
下面是完整的例子:
#include <iostream>
using namespace std;
int main(int argc, const char * argv[])
{
enum egg {a,b,c};
egg test;
test = c;
if(test == c)
{
cout<< "test枚举对应的枚举元素是c" << endl;
}
if(test == 2)
{
cout << "枚举类型test对应的枚举元素是2" << endl;
}
cout << a << "|" << b << "|" << test <<endl;
test = (enum egg)0;
cout << "test的值改变为:" << test <<endl;
cin.get();
}
输出结果是:
test枚举对应的枚举元素是c
枚举类型test对应的枚举元素是2
0|1|2
test的值改变为:0
最后一个问题:
枚举类型在特殊情况下会自动提升为算术类型:
#include <iostream>
using namespace std;
int main(int argc, const char * argv[])
{
enum test{a,b};
int c = 1+b;
cout << c<<endl;
cin.get();
}
输出结果为2.