一、枚举
1--
C++中的enum工具提供了一种建立创建符号常量的方式。
enum color{red,orange,yellow,green,blue,violet,purple};
这一语句,让color成为枚举类型的名称,就像结构的类型名一样;同时,让red等作为符号常量,对应整数0~6。这些常量被称为枚举量。也就是说,这个操作和下面的一段代码差不多:
const int red=0;
const int orange=0;
const int yellow=2;
const int green=3;
const int blue=4;
const int violet=5;
const int purple=6;
2--
通过枚举名可以声明枚举类型的变量,这一变量有一些特殊的性质
color a;
//和C++的结构变量声明一样,可以去掉前面的enum了
a:可以将枚举量赋给枚举变量,也可以直接进行初始化:
#include <iostream>
enum color{red,orange,yellow,green,blue,violet,purple};
int main(void)
{
color r=red;
color b;
b=blue;
enum color y=yellow;
enum color v;
v=violet;
}
(从中看出,enum可以省略,也可以不省略)
b:将一个非enum的值赋给enum变量会出错(除非进行强制类型转换)
c:enum变量之间没有定义运算符
#include <iostream>
enum color{red,orange,yellow,green,blue,violet,purple};
int main(void)
{
color r;
color b;
r=0 //非法
r++; //非法
v=blue+orange; //非法
return 0;
}
(blue+orange由于自动的类型转换,其实是合法的,但不能将值赋给enum型变量)
3--枚举变量的值是可以认为设置的
enum bits{one=1,two=2,four=4,eight=8};
enum bigstep{first,second=100,third};
注意,指定的值必须是整数。对于bigstep,first在默认情况下为0,而后面没有被初始化的枚举量的值都比前面的枚举值大1.故third的值是101。
也可以如下设置多个枚举值相同的枚举量:
enum{zero,null=0,one,first=1};
这里zero和null的值都是0,one和first的值都是1.
和struct一样,枚举也可以省略类型名,但这样就不能创建枚举型变量了