首页 > 代码库 > 第一篇:容易遗忘的“枚举”

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

前言

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

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

枚举类型有啥用?

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

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

 1 /* 2  *  用宏 3 */ 4 #define input 0 5 #define output 1 6  7 /* 8  *  用常变量 9 */10 const input 011 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++教材。

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