枚举定义的三种方式
(1)
#include <stdio.h>
enum ENUM_TEST
{
ENUM_EST1=1,
ENUM_EST2,
ENUM_EST3,
ENUM_EST4,
ENUM_EST5,
ENUM_EST6,
ENUM_EST7,
ENUM_EST8,
ENUM_EST9,
ENUM_EST10,
};
int main()
{
enum ENUM_TEST enum_test;
enum_test = ENUM_EST10 + 1;
printf("enum_test=%d\n", enum_test);
return 0;
}
结果:enum_test=11
(2)
#include <stdio.h>
enum
{
ENUM_EST1=1,
ENUM_EST2,
ENUM_EST3,
ENUM_EST4,
ENUM_EST5,
ENUM_EST6,
ENUM_EST7,
ENUM_EST8,
ENUM_EST9,
ENUM_EST10,
}ENUM_TEST;
int main()
{
ENUM_TEST = ENUM_EST10 + 1;
printf("enum_test=%d\n", ENUM_TEST);
return 0;
}
结果:enum_test=11
(3)
#include <stdio.h>
typedef enum
{
ENUM_EST1=1,
ENUM_EST2,
ENUM_EST3,
ENUM_EST4,
ENUM_EST5,
ENUM_EST6,
ENUM_EST7,
ENUM_EST8,
ENUM_EST9,
ENUM_EST10,
}ENUM_TEST;
int main()
{
ENUM_TEST enum_test;
enum_test = ENUM_EST10 + 1;
printf("enum_test=%d\n", enum_test);
return 0;
}
结果:enum_test=11
注意1:
1) 给枚举变量赋值,如果数值超过了枚举的取值范围,则结果是不确定的,如上述三个例子。
2)以(1)为基础,作如下改动:
enum_test = (enum ENUM_TEST)(4);
运行结果为4
如果设置ENUM_EST4=8, 此结果仍为4
注意2:
最后一个枚举元素可以有“,”也可以没有
注意3:
第一种用法,在声明enum_test变量时必须用enum ENUM_TEST 声明,而不能只用ENUM_TEST;在C++中两种都是可以的。
第一种用法和第三种用法,都是声明了一种类型;
第二种用法和第三种用法,虽然只相差一个typedef关键字,但意义确大不相同;第二种用法是声明了一个枚举变量,第三种用法是声明了一个枚举类型。