枚举用法总结

时间:2025-03-15 07:10:55

4、枚举变量的定义、初始化和赋值
     既然每个枚举都是一个类型,那么由这个类型自然可以声明变量,例如,由前面定义的some_big_cities:
     some_big_cities where_I_am;
     需要注意的是,在声明where_I_am时没有初始化,如果这时打印where_I_am的值:
     enum some_big_cities {
                                            Guangzhou = 4,
                                            Shenzhen = 4,
                                            Hongkong = 4,
                                            Shanghai = 2,
                                            Beijing = 3,
                                            Chongqi = 5};
int main(void)
{
      some_big_cities wh;
     cout<<"the value is: "<<wh<<endl;
     return 0;
}
输出将是the value is: 1. 然而,如果声明wh为全局变量,则另一种情况:
enum some_big_cities {Guangzhou = 1 Shenzhen = 1, Hongkong = 1,
                                       Shanghai = 2, Beijing = 3, Chongqi = 5};
some_big_cities wh;
int main(void)
{
   cout<<"the value is: "<<wh<<endl;
   return 0;
}
输出将是the value is: 0;
      以上结果是在Visual C++ 2005 Express中得到,不知道其它编译器情况如何,也不知为什么得到这样的结果。下来再找找资料。
     定义一个枚举变量时,可以给它初始化,例如:
     some_big_cities wh = Guangzhou;
     注意等号右边只能取枚举子中的某一个;特别地,以Guangzhou为例,虽然Guangzhou==4, 但以下初始化是出错的:
     some_big_cities wh = 4;
     Visual C++ 2005编译器提示:
        error C2440: 'initializing' : cannot convert from 'int' to 'some_big_cities'
      可见,不能直接地把一个整型赋值给一个枚举变量,因为枚举和整型是不同类型的,除非显式转换。关于枚举与整型的关系,后面再讲。
      除了初始化,枚举变量也有赋值运算:
     some_big_cities wh;
     wh = Guangzhou;
     wh = Shanghai;
或者
    some_big_cities wh1 = Guangzhou;
    some_big_cities wh2 = Shanghai;
    wh2 = wh1;