enum
关键字有什么用?我们在哪里可以使用枚举数据类型?
任何人都可以用一个例子来解释吗?
答案 0 :(得分:6)
enum
为数字命名。
enum { MAX_LINES = 60 };
表面上看,#define
:
#define MAX_LINES 60
enum
优于#define
的好处是名称记录在调试信息中,因此调试器可以使用它。
您还可以使用enum
来定义一组相关值:
typedef enum { RED, GREEN, BLUE } Colour;
然后,您可以使用它们为RGB值索引到三元组数组:
typedef unsigned char Pixel[3];
Pixel p;
p[RED] = 128;
p[GREEN] = 128;
p[BLUE] = 255;
可能不是世界上最好的例子,但表明可以使用enum
的位置。
答案 1 :(得分:0)
枚举在“ANSI C”(或c89)时引入,基本语法为
enum type {
item1,
item2,
item3
};
它取值从0开始,item1将保持0,item2 = 1,item3 = 2 ..直到你告诉编译器它应该从哪个值开始,
enum type {
item1 = 10,
item2,
item3
};
然后值为,item1 = 10,item2 = 11,item = 12 ..此外,编译器会将它们视为整数。
int i=10;
i += item1;
是
i = i + 10;
您还可以定义枚举类型的变量。
enum type mytype;
mytype = item1;
在这种情况下,变量item1被(静默地)转换为“枚举类型”类型。您可以将“枚举类型”类型的变量与整数混合。
mytype = i;
mytype = mytype + 100;
虽然变量mytype的类型为“枚举类型”,但它也被视为整数,因此它可以包含任何整数变量。 但IMO,枚举应该用作常量,不应该参与算术运算,让编译器决定自身的值而不是赋值。
答案 2 :(得分:0)
枚举是枚举器(ok,trivial),总是作为整数处理,它们用于按顺序放置稍后可以使用的内容,如常用值或索引。但是,正如名字所说,它们被列举,总是提升,如:
enum myenum {
January, February, March, April, May, June, July, August, September, October, November, December
};
然后,如果你有一个数组,请说:
int months[12][30];
您可以使用以下方式致电您的月份:
months[March][...];
另外,如果您声明:
enum myenum { January = 1, February, March, ..., };
这个程序将从1开始枚举的计数器,依此类推。
最后,关于最后一条规则:您可以根据需要设置初始值,例如10,20,30,42等,但您也可以设置其中一个枚举值,并在默认情况下对其他值进行排序。 / p>
答案 3 :(得分:0)
枚举是一个常量整数值的列表,如
enum boolean { FALSE, TRUE };
枚举中的第一个名称值为0,下一个名称为1,依此类推,除非指定了显式值。如果未指定所有值,则未指定的值将继续从上一个指定值开始:
enum months { JAN = 1, FEB, MAR, APR, MAY, JUN, JUL, AUG, SEP, OCT, NOV, DEC };
由于char
在内部使用整数表示,您可以声明指向字符常量的枚举:
enum whitespaces { SPACE = ' ', TAB = ’\t’, NEWLINE = ’\n’, RETURN = ’\r’ };
枚举优于#define
的优点是可以为您生成值。此外,调试器可能能够以符号形式打印枚举变量的值。