枚举型相当于助记符,帮助程序员记忆。 例如,现在画地图。 使用红黄蓝绿4种颜色。 为了便于存储,假设0=红,1=黄,2=蓝,3=绿。 但是,编程到某个阶段的话,程序员可能会忘记哪个数字具体对应于哪个颜色,或者会忘记有多少个数字。 那种情况下,他必须查表,时间会慢。 此时,可以定义枚举类型enum color{Red,Yellow,Blue,Green}。 这将自动将0、1、2、3与枚举类型的元素相关联。 程序员只要记住“Red”、“Green”等单词即可,不会出现“4”的单词,下面介绍c语言枚举型的使用方法。
c语言枚举类型的使用方法如下。
1 .枚举的定义枚举类型定义的一般形式如下。
枚举枚举名称{枚举值表}; 必须列出枚举值表中的所有可用值。 这些值也称为枚举元素。
例如,枚举的名称为weekday,枚举值共有7个,即一周中的7天。 7天中只有一天被描述为weekday类型变量。
2 .枚举变量的说明就像结构和联合一样,枚举变量也可以用不同的方法说明。 也就是说,先定义再说明,同时定义说明,或者直接说明。
变量a、b、c被说明为上述weekday,可以采用以下方式之一。
enum weekday{ sun,mou,tue,wed,thu,fri,sat };
enum weekday a、b、c;
或者,enum weekday{ sun,mou,tue,wed,thu,fri,sat }a,b,c;
或者enum { sun,mou,tue,wed,thu,fri,sat }a,b,c;
枚举类型有以下规定:1.枚举值是常量,而不是变量。 程序中不能使用赋值语句赋值。
例如,在枚举weekday的元素中,sun=5; mon=2; sun=mon; 错了。
2 .枚举元素本身由系统定义,表示编号的数值从0开始依次定义为0、1、2…。 对于weekday,sun值为0,mon值为1,…,sat值为6。
【例11.10】
main () EnumWeekday ) sun,mon,tue,wed,thu,fri,sat } a,b,c; a=sun; b=mon; c=tue; printf('%d、%d、%d '、a、b、c ); }
说明:枚举值只能提供给枚举变量,元素的数值不能直接提供给枚举变量。
例如,a=sum; b=mon; 是正确的。 另一方面,a=0; b=1; 错了。 要为枚举变量赋予数值,必须使用强制类型转换。
例如,a=(EnumWeekday ) 2; 其含义是向枚举变量a赋予序列号为2的枚举元素,a=tue;
枚举元素既不是字符常数,也不是字符串常数,因此请不要使用单引号或双引号。
[ c-sharp ]视图平面
//此代码不能在VS中编辑,枚举类型不能进行自递增操作
//gcc上说可以编辑,但我没有尝试过
主()。
枚举主体
{a,b,c,d}month[31],j;
inti;
j=a;
for(I=1; i=30; I ) {
month[i]=j;
j; //vs时出错
if(JD ) j=a;
}
for(I=1; i=30; I ) {
(开关(month [ I ] ) ) ) ) ) ) ) ) ) )。
{
CASEA:printf('-%c/t ',I,' a ' ); 布雷克;
caseb3360printf(-%c/t )、I、(b ); 布雷克;
casec:printf(-%c/t )、I、(c ); 布雷克;
cased:printf('-%c/t ',I,' d ' ); 布雷克;
默认: break;
}
}
打印()/n );
}
要使用VS进行编译,请参阅以下代码。
[ c-sharp ]视图平面
枚举主体
{a,b,c,d}month[31],j;
inti;
j=a;
for(I=1; i=30; I )
{
month[i]=j;
j=(enumbody ) ) j 1; //这样改就可以了,强制切换
if(JD ) j=a;
}
for(I=1; i=30; I )
{
(开关(month [ I ] ) ) ) ) ) ) ) ) ) )。
{
CASEA:printf('-%c/t ',I,' a ' ); 布雷克;
caseb3360printf(-%c/t )、I、(b ); 布雷克;
casec:printf(-%c/t )、I、(c ); 布雷克;
cased:printf('-%c/t ',I,' d ' ); 布雷克;
默认: break;
}
}
打印()/n );