(转)C笔记之enum枚举类型的使用

我们在编程的时候经常用到常量,
一般的操作是
#define anumber 3
#define bnumber 4
#define cnumber 5
 但是:
对于常数类型,建议使用 enum 分类组织,避免使用大量 #define 定义常数
如果一个变量你需要几种可能存在的值,那么就可以被定义成为枚举类型。之所以叫枚举就是说将变量或者叫对象可能存在的情况也可以说是可能的值一一例举出来。 

举个例子来说明一吧,为了让大家更明白一点,比如一个铅笔盒中有一支笔,但在没有打开之前你并不知道它是什么笔,可能是铅笔也可能是钢笔,这里有两种可能,那么你就可以定义一个枚举类型来表示它!
enum box{pencil,pen};//这里你就定义了一个枚举类型的变量叫box
这个枚举变量内含有两个元素也称枚举元素在这里是pencil和pen,分别表示铅笔和钢笔。

这里要说一下,如果你想定义两个具有同样特性枚举类型的变量那么你可以用如下的两种方式进行定义!
enum box{pencil,pen};  
enum box box2;//或者简写成box box2;
再有一种就是在声明的时候同时定义
enum {pencil,pen}box,box2;
枚举变量中的枚举元素系统是按照常量来处理的,故叫枚举常量,他们是不能进行普通的算术赋值的,(pencil=1;)这样的写发是错误的,但是你可以在声明的时候进行赋值操作!
enum box{pencil=1,pen=2};
但是这里要特别注意的一点是,如果你不进行元素赋值操作那么元素将会被系统自动从0开始自动递增的进行赋值操作,说到自动赋值,如果你只定义了第一个那么系统将对下一个元素进行前一个元素的值加1操作,例如
enum box{pencil=3,pen};
这里pen就是4系统将自动进行pen=4的定义赋值操作!
在实际问题中,有些变量的取值被限定在一个有限的范围内。例如,一个星期内只有七天,一年只有十二个月,一个班每周有六门课程等等。如果把这些量 说明为整型,字符型或其它类型显然是不妥当的。为此,C语言提供了一种称为“枚举”的类型。在“枚举”类型的定义中列举出所有可能的取值,被说明为该“枚 举”类型的变量取值不能超过定义的范围。应该说明的是,枚举类型是一种基本数据类型,而不是一种构造类型,因为它不能再分解为任何基本类型。 
枚举类型在使用中有以下规定: 
1. 枚举值是常量,不是变量。不能在程序中用赋值语句再对它赋值。 
enum weekday 
{ sun,mon,tue,wed,thu,fri,sat } a,b,c;
a=sun;
b=mon;
c=tue;
}

例如对枚举weekday的元素再作以下赋值: 
sun=5; 
mon=2;
sun=mon;
都是错误的只能把枚举值赋予枚举变量,不能把元素的数值直接赋予枚举变量。如: 
a=sum; 
b=mon; 
是正确的
还应该说明的是枚举元素不是字符常量也不是字符串常量,使用时不要加单、双引号
 
已邀请:

要回复问题请先登录注册