一.枚举类型采用以下的语法形式来定义:
        typedef enum{element-list}name;
        其中,element-list是标识符的列表,被称作枚举常量。name是这个新类型的名称。
    如:Typedef enum{Norht,South,East,West }directionT;
    枚举类型的值在机器内部当做整型来存储。当编译器遇到一个新的枚举类型时,它通常从0开始分配给枚举变量一系列整数。因此,在directionT示例中,常量可以是这些值:North=0,South=1,East=2,West=3。不过,也可以通过为每个枚举常量赋一个整数常量来控制枚举类型的编码。例如,当执行了下面的定义之后:
typedef enum{North=1,South=5,East=10,West=20}directionT;
每一个枚举变量North,South,East,West在机器内部用对应的值表示。如果没有指定枚举常量值,编译器会在前一个常量值得基础上简单地加1.
我们下面看一些例子验证一下上面所说是否正确。
例一:
#include<iostream>
using namespace std;

typedef enum
{
  North,
  South,
  East,
  West
}dirction;

int main()
{
  int dir;
  for(dir=North;dir<=West;dir++)
  {
    cout<<dir<<' ';
  }
  cout<<endl;    
return 0;
}
 
        运行结果为:0 1 2 3
                   例二:
typedef enum
{
  North=1,
  South=5,
  East=10,
  West=8
}dirction;

int main()
{
  int a,b,c,d;
  a=North;
  b=South;
  c=East;
  d=West;
  cout<<a<<' '<<b<<' '<<c<<' '<<d<<endl;
  return 0;
}
 
       
运行结果为:1  5  10  8
例三:
typedef enum
{
  North=3,
  South,
  East,
  West
}dirction;

int main()
{
  int dir;
  for(dir=North;dir<=West;dir++)
  {
    cout<<dir<<' ';
  }
  cout<<endl;
  return 0;
}
 
运行结果为:3  4  5  6
例四:
typedef enum
{
  North=5,
  South,
  East=10,
  West
}dirction;

int main()
{
  int a,b,c,d;
  a=North;
  b=South;
  c=East;
  d=West;
  cout<<a<<' '<<b<<' '<<c<<' '<<d<<endl;
  return 0;
}
运行结果为:5  6  10  11
二.枚举变量的应用
    枚举类型的值虽然在机器内部当作整型来存储,但是不能将一个整数直接赋值给一个枚举变量,
    如direction dir;
    定义了一个枚举变量,下面对其赋值
         dir=0//企图使dir的值为North;
    这句话是不能通过编译的,会提示将一个整型数值赋给了一个枚举类型变量。但是可以采用强制类型转换的方法来赋值。
         dir=(direction)0;
    使用强制类型转换,将整型数值转换为枚举类型数值,这样就可以实现dir的值为North了。
    枚举类型几乎可以应用在任何整型出现的地方。例如,枚举变量可以
应用于switch语句的控制条件表达式中。
例五:
typedef enum
{
  North,
  South,
  East,
  West
}direction;

int main()
{
  direction dir;
  dir=North;
  switch(dir)
  {
  case North:cout<<"North"<<endl;
    break;
  case South:cout<<"South"<<endl;
    break;
  case East:cout<<"East"<<endl;
    break;
  case West:cout<<"West"<<endl;
    break;
  default:
    break;
  }
  return 0;
}
                 运行结果:North