第一篇:容易遗忘的“枚举”

前言

       在C/C++代码中,经常看到枚举类型的变量。那么枚举类型有啥用?枚举类型具体又该如何使用?

       本文将结合具体实例为你解答。

枚举类型有啥用?

       在编程中,我们经常需要为某些属性定义一组可选择的值。打个比方,我现在要编写一个文件处理程序,那么我就要先定义一个状态变量,然后用一组值来表示文件的打开,关闭等状态。

       我们很容易直观地想到以下两种做法:

 1 /*
 2  *  用宏
 3 */
 4 #define input 0
 5 #define output 1
 6 
 7 /*
 8  *  用常变量
 9 */
10 const input 0
11 const output 1

       这样的做法可行,但是有缺点,那就是没有体现出同一类状态变量的描述宏/值之间的关联性。而枚举类型则很好的解决了这个问题。

枚举类型怎么用?

       首先看一个枚举定义的示例:

1 enum Fruit {
2     apple,
3     orange,
4     pear,
5 };

       这个例子定义了一个名为Fruit的枚举类型,它包含三个描述值 - apple,orange,pear。其中第一个值(apple)默认等价于0,第二个(orange)1,依此类推。

       这几个描述值可以像一般的常量表达式般使用,请看下面示例:

 1 #include <iostream>
 2 
 3 using namespace std;
 4 
 5 enum Fruit {
 6     apple,
 7     orange,
 8     pear,
 9 };
10 
11 int main()
12 {
13     cout << "apple: " << apple << endl;
14     cout << "orange: " << orange << endl;
15     cout << "pear: " << pear << endl;
16 
17     return 0;
18 }

       运行结果:

      

       但枚举真正的用途是为一种状态变量提供一组相关联的描述值,参考以下代码:

#include <iostream>
 
using namespace std;
 
enum Fruit {
    apple,
    orange,
    pear,
};

int main()
{
    /*
     * 定义枚举变量jacklike和mikelike
    */
    Fruit jacklike;
    Fruit mikelike;
 
    /*
     * 将指定状态值赋给枚举变量
    */
    jacklike=apple; 
    mikelike=orange;
 
    /*
     * 程序根据枚举变量的状态值作出不同处理
    */
    if (jacklike == apple) {    
        cout << "Jack like apple" << endl;
    }
    if (mikelike == apple) {
        cout << "Mike like apple." << endl;
    }
 
    return 0;
}

小结

       必须要在具体编程中多多尝试使用枚举,才能真正掌握枚举。同时一些关于枚举的语法细则我没有列出,想全面了解请查阅相关C++教材。

posted @ 2016-12-06 08:58  穆晨  阅读(968)  评论(0编辑  收藏  举报