首先,枚举类型实际上是将某些离散值一个显示的标记,比如:
enum
season{spring,summer,autum=3,winter};
如果没有特殊指定,系统会默认从0开始进行映射。spring
=0;summer=1
如果有特别需求,可以直接写出,如autum=3;此时,winter没有显示的映射,所以直接为上一项+1,winter=4;
实际上,上述的“=”是“相当”而不是相等的意思。
所以sizeof(winter)
==
sizeof(int),具体数值按 *** 作系统而定。
至于spring等符号,仅仅是符号……
定义的例子
typedef enum {clRED,clBLUE,clGREEN} TColor;
TColor thisColor;//定义变量
使用的例子
if (thisColor==clRED){
printf("红\n");
}
或
switch(thisColor){
case clRED:printf("红\n");break;
case clGREEN:printf("绿\n");break;
case clBLUE:printf("蓝\n");break;
else:printf("未定义 \n");break;
}
DatabaseType d1 = (DatabaseType)EnumParse(typeof(DatabaseType), "MSSQL", true);
DatabaseType d2 = (DatabaseType)EnumParse(typeof(DatabaseType), "0", true);
结果 d1=DatabaseTypeMSSQL;
d2=DatabaseTypeUnDefined;
如果枚举没有初始化, 即省掉"=整型常数"时, 则从第一个标识符开始, 顺
次赋给标识符0, 1, 2, 。但当枚举中的某个成员赋值后, 其后的成员按依次
加1的规则确定其值。
例如下列枚举说明后, x1, x2, x3, x4的值分别为0, 1, 2, 3。
enum Num{x1, x2, x3, x4}x;
当定义改变成:
enum Num
{
x1,
x2=0,
x3=50,
x4
}x;
则x1=0, x2=0, x3=50, x4=51
注意:
1 枚举中每个成员(标识符)结束符是",", 不是";", 最后一个成员可省略
","。
2 初始化时可以赋负数, 以后的标识符仍依次加1。
3 枚举变量只能取枚举说明结构中的某个标识符常量。
例如:
enum Num
{
x1=5,
x2,
x3,
x4
};
enum Num x=x3;
此时, 枚举变量x实际上是7。
enum设计出来是为了编写代码方便而使用的,底层并不保存枚举量名称,如果你真需要打印出enum的变量名称出来,可以使用下面的方式:
typedef
enum
{
A
=
0,
B,
C
}ENUM_SAM_T;
char
p[3]={"A","B","C"};
然后可以在程序中做如下打印枚举量E的值:
ENUM_SAM_T
E
=
A;
printf("%s",p[E]);
typedef enum
{
TEST_ENUM_ZERO,
TEST_ENUM_FRIST,
TEST_ENUM_END
}TEST_ENUM;
TEST_ENUM test;
test就是一个枚举类型的变量,其值可以是TEST_ENUM_ZERO,TEST_ENUM_FRIST,TEST_ENUM_END中的一个,TEST_ENUM_ZERO其实就是0,TEST_ENUM_FRIST就是1,以此类推
以上就是关于求教C语言枚举类型的问题全部的内容,包括:求教C语言枚举类型的问题、c语言返回枚举类型及判断、c# 大家是如何处理根据字符串来获取枚举值的等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)