第一篇:容易遗忘的“枚举”
前言
在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++教材。