求教C语言枚举类型的问题

求教C语言枚举类型的问题,第1张

首先,枚举类型实际上是将某些离散值一个显示的标记,比如:

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# 大家是如何处理根据字符串来获取枚举值的等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/9316187.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-27
下一篇 2023-04-27

发表评论

登录后才能评论

评论列表(0条)

保存