例9-7 定义描述颜色的枚举类型enum COLORS,并进行相关的运算。 enum COLORS { BLACK, BLUE, GREEN,CYAN,RED,MAGENTA,BROWN, LIGHTGRAY,DARKGRAY,LIGHTBLUE,LIGHTGREEN,LIGHTCYAN, LIGHTRED,LIGHTMAGENTA,YELLOW,WHITE}; void main() {
enum COLORS a,b,c; enum COLORS *pa; int d=-2; a=RED; b=WHITE; c=0;
printf (\"\\na=%d b=%d c=%d d=%d\",a,b,c,d); c=a+b; if(a>b) pa=&a; else pa=&b;
*pa= d;
printf (\"\\na=%d b=%d c=%d d=%d\",a,b,c,d); }
程序的运行结果如下: a=4 b=15 c=0 d=-2 a=4 b=-2 c=19 d=-2
例9-8 模拟机器人控制系统中的指令,并控制机器人在平面内的移动。 enum Direction{up,down,forward,back,left,right}; void main() {
enum Direction commands[10]=
{forward,right,forward,right,forward,right,forward,right,forward,right}; int x=0,y=0; int i=0;
for (i=0;i<10;i++) {
move(commands[i],&x,&y);
printf(\"\\nPosition[%d] is (%d,%d)\",i+1,x,y); } }
int move(enum Direction command,int *px,int *py) {
int nRet=1;
static int x=0,y=0 ; switch(command) {
case left: x-=1; break; case right: x+=1; break; case forward: y+=1; break; case back: y-=1; break; default :
nRet=0; break; }
*px=x; *py=y;
return nRet; }
程序运行结果如下: Position[1] is (0,1) Position[2] is (1,1) Position[3] is (1,2) Position[4] is (2,2) Position[5] is (2,3) Position[6] is (3,3) Position[7] is (3,4) Position[8] is (4,4) Position[9] is (4,5) Position[10] is (5,5)
enum Direction{up,down,forward,back,left,right}定义了机器人可以处理的指令集合。函数int move(enum Direction command,int *px,int *py)描述了翻译与执行系统,从而实现机器人根据控制指令进行移动。
REF:.txt,函数参数.txt,函数返回值.txt 枚举类型变量的声明
TAG:枚举类型,枚举类型变量的声明 TEXT:定义枚举类型变量之前,要先完成枚举类型的定义。定义枚举变量的形式主要有两种形式:
形式1:先定义枚举类型,然后在定义枚举变量,例如
enum Direction{up,down,before,back,left,right}; enum Direction fisrt Direction,second Direction; 形式2:定义枚举类型,同时定义枚举变量,例如: enum Direction{up,down,before,back,left,right} fisrt Direction,second Direction ;
REF:.txt
枚举类型的定义
TAG:枚举类型,基本概念,枚举类型的定义 TEXT:
一般的枚举类型的定义的语法描述如下: enum 枚举标识符{常量列表};
其中enum为系统关键字,枚举标识符遵循变量的命名规则。常量列表中,每个枚举常量之间通过逗号分割。
例如描述上述方位,可定义枚举类型enum Direction。
enum Direction {up,down,before,back,left,right};
其中up,down,before,back,left,right为枚举常量,可以直接引用。 另外,还可以为枚举常量指定其对应的整形常量数值,例如
enum Direction {up=1,down=2,before=3,back=4,left=5,right=6}; 注意常量值不可出现重复,下面的情况是违法的。
enum Direction{up=1,down=1,before=3,back=4, left=5,right=6};
如果在给定枚举常量的时候不指定其对应的整数常量值,系统将自动为每一个枚举常量设定一对应的整数常量值,例如:
enum Direction{up,down,before,back,left,right};
中up对应的整数值为0, down对应的整数值为1,以此类推right=5; printf(“%d”, right)的输出结果为5。
另外,允许设定部分枚举常量对应的整数常量值,但是要求从左到右依次设定枚举常量对应的整数常量值,并且不能重复。例如:
enum Direction{up=7,down=1,before,back,left,right};
则从第一没有设定值的常量开始,其整数常量值为前一枚举常量对应的整数常量值加1。因此输出语句printf(“%d”, right)的输出结果为5。
REF:.txt