程序设计抽象思维(第二章)――enum

一. 枚举类型采用以下的语法形式来定义:
        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
 

你可能感兴趣的:(职场,枚举类型,整型,休闲)