1. 枚举 enum 这样写对吗
对的
C语言的枚举类型实质就是整型变量,只不过通过枚举类型将一类有关联的标识组合起来,增加程序的可读性和可维护性
(1) 枚举型是一个集合,集合中的元素(枚举成员)是一些命名的整型常量,元素之间用逗号,隔开。
(2) DAY是一个标识符,可以看成这个集合的名字,是一个可选项,即是可有可无的项。
(3) 第一个枚举成员的默认值为整型的0,后续枚举成员的值在前一个成员上加1。
(4) 可以人为设定枚举成员的值,从而自定义某个范围内的整数。
(5) 枚举型是预处理指令#define的替代。
(6) 类型定义以分号;结束。
定义枚举类型
enum YOURENUMTYPE
{
ID1,//如果不额外指定则第一个标识等于整数0,后续依次加1
ID2,
ID3=7,
.
IDn//最后一个标识符后面没有逗号
};//注意一定要加上这个分号
定义枚举变量
enum YOURENUMTYPE varname;
给枚举变量赋值 varname = IDx;
举个完整的例子
enum FRUIT
{
APPLE,
PEAR,
ORANGE,
PEACH,
GRAPE,
BANANA
};
enmu FRUIT myfruit = PEACH;
2. 如何获取enum枚举值
枚举常量是枚举类型中的值,是一种用户定义的类型,只有用户在程序中定义它后才能被使用。用户通常利用枚举类型定义程序中需要使用的一组相关的符号常量。枚举类型的定义格式为:
enum {};
(1) enum color{red, yellow, blue};
(2) enum day{Sun, Mon, Tues, Wed, Thur, Fri, Sat};
第一条语句定义了一个枚举类型color,用来表示颜色,它包含三个枚举值red,yellow和blue,分别代表红色、黄色和兰色。
第二条语句定义了一个枚举类型day,用来表示日期,它包含7个枚举值,分别表示星期日、星期一至星期六。
一种枚举类型被定义后,可以象整型等预定义类型一样使用在允许出现数据类型的任何地方。如可以利用它定义变量。
(1) enum color c1, c2,c3;
(2) enum day today, workday;
(3) c1=red;
(4) workday=Wed;
第一条语句开始的保留字enum和类型标识符colou表示上述定义的枚举类型color,其中enum可以省略不写,后面的三个标识符c1,c2和c3表示该类型的三个变量,每一个变量用来表示该枚举表中列出的任一个值。
第二条语句开始的两个成分(成分之间的空格除外)表示上述定义的枚举类型day,同样enum可以省略不写,后面的两个标识符today和workday表示该类型的两个变量,每一个变量用来表示该枚举表中列出的七个值中的任一个值。
第三条语句把枚举值red赋给变量c1,第四条语句把枚举值Wed赋给变量workday。
在一个枚举类型的枚举表中列出的每一个枚举常量都对应着一个整数值,该整数值可以由系统自动确认,也可以由用户指定。若用户在枚举表中一个枚举常量后加上赋值号和一个整型常量,则就表示枚举常量被赋予了这个整型常量的值。如:
enum day{Sun=7, Mon=0, Tues, Wed, Thur, Fri, Sat};
用户指定了Sun的值为7,Mon的值为0。
若用户没有给一个枚举常量赋初值,则系统给它赋予的值是它前一项枚举常量的值加1,若它本身就是首项,则被自动赋予整数0。如对于上述定义的color类型,red,yellow和blue的值分别为0,1和2;对于刚被修改定义的day类型,各枚举常量的值依次为7,0,1,2,3,4,5,6。
由于各枚举常量的值是一个整数,所以可把它同一般整数一样看待,参与整数的各种运算。又由于它本身是一个符号常量,所以当作为输出数据项时,输出的是它的整数值,而不是它的标识符,这一点同输出其他类型的符号常量是一致的。
3. 枚举 enum 这样写对吗
对的C语言的枚举类型实质就是整型变量,只不过通过枚举类型将一类有关联的标识组合起来,增加程序的可读性和可维护性(1) 枚举型是一个集合,集合中的元素(枚举成员)是一些命名的整型常量,元素之间用逗号,隔开。
(2) DAY是一个标识符,可以看成这个集合的名字,是一个可选项,即是可有可无的项。(3) 第一个枚举成员的默认值为整型的0,后续枚举成员的值在前一个成员上加1。
(4) 可以人为设定枚举成员的值,从而自定义某个范围内的整数。(5) 枚举型是预处理指令#define的替代。
(6) 类型定义以分号;结束。定义枚举类型enum YOURENUMTYPE{ ID1,//如果不额外指定则第一个标识等于整数0,后续依次加1 ID2, ID3=7, 。
. IDn//最后一个标识符后面没有逗号};//注意一定要加上这个分号定义枚举变量enum YOURENUMTYPE varname;给枚举变量赋值 varname = IDx;举个完整的例子enum FRUIT{ APPLE, PEAR, ORANGE, PEACH, GRAPE, BANANA };enmu FRUIT myfruit = PEACH;。
4. Enum枚举变量如何赋值
举例说明:
enum WeekDay
{
sun = 0,
mon,
tue,
wed,
thu,
fri,
sa
};在枚举中,第一个标识的值默认为 0,然后会依次递增;所以上面sun = 0, 也可以不赋值。
如果不想从0开始,可以直接写成sun = n (n = 0.1.2.3.4.5。。)
甚至, 如果不想要连续的值,可直接写成如下:
enum WeekDay
{
sun = 0,
mon = 2,
tue = 4,
wed = 6,
thu = 19,
fri = 20,
sa = 30
};注意:
1、枚举变量,在不赋值的情况下是从第一个标识开始递增的;赋值后就以自己的赋值为主了。
2、对枚举元素按常量处理,故称枚举常量。
望采纳, 谢谢。
5. C++中enum是什么意思举例说明
这是百度百科的内容:
enum枚举类型:在实际问题中,有些变量的取值被限定在一个有限的范围内。例如,一个星期内只有七天,一年只有十二个月,一个班每周有六门课程等等。如果把这些量说明为整型,字符型或其它类型显然是不妥当的。为此,C语言提供了一种称为“枚举”的类型。在“枚举”类型的定义中列举出所有可能的取值,被说明为该“枚举”类型的变量取值不能超过定义的范围。应该说明的是,枚举类型是一种基本数据类型,而不是一种构造类型,因为它不能再分解为任何基本类型。
我具体举例:
比如 我定义个枚举week{sun,mon,tue,wed,thu,fri,sat}
然后 定义枚举变量 week a;
a就只能等于sun,mon,tue,wed,thu,fri,sat其中之一的值
sun,mon,tue,wed,thu,fri,sat这些都有编号 默认是0,1,2,3,4,5,6。;
也就是说如果说我 让 a=sun;
这和 a=(enum week)0;
是一样的
6. python 怎么通过枚举的值
从C系语言过来用Python,好不容易适应了写代码不打花括号,突然有一天发现它居然木有枚举……于是stackoverflow了一把,发现神人的枚举(enum)实现到处都是,于是汉化总结过来。
如果是新版Python用户(Python 3.4 with PEP 435):from enum import Enum Animal = Enum('Animal', 'ant bee cat dog') or class Animals(Enum): ant = 1 bee = 2 cat = 3 dog = 4 旧版Python用户可以充分发挥动态语言的优越性来构造枚举,有简单的:def enum(**enums): return type('Enum', (), enums) Numbers = enum(ONE=1, TWO=2, THREE='three')# Numbers.ONE == 1, Numbers.TWO == 2 and Numbers.THREE == 'three' 有复杂的:def enum(*sequential, **named): enums = dict(zip(sequential, range(len(sequential))), **named) return type('Enum', (), enums) Numbers = enum('ZERO', 'ONE', 'TWO')# Numbers.ZERO == 0 and Numbers.ONE == 1 有带值到名称映射的:def enum(*sequential, **named): enums = dict(zip(sequential, range(len(sequential))), **named) reverse = dict((value, key) for key, value in enums.iteritems()) enums['reverse_mapping'] = reverse return type('Enum', (), enums)# Numbers.reverse_mapping['three'] == 'THREE' 有用set实现的:class Enum(set): def __getattr__(self, name): if name in self: return name raise AttributeError Animals = Enum(["DOG", "CAT", "HORSE"]) print Animals.DOG 有用range实现的:dog, cat, rabbit = range(3)# or class Stationary: (Pen, Pencil, Eraser) = range(0, 3) print Stationary.Pen 有用tuple实现的:class Enum(tuple): __getattr__ = tuple.index State = Enum(['Unclaimed', 'Claimed']) print State.Claimed 有用namedtuple实现的:from collections import namedtuple def enum(*keys): return namedtuple('Enum', keys)(*keys) MyEnum = enum('FOO', 'BAR', 'BAZ')# 带字符数字映射的,像C/C++ def enum(*keys): return namedtuple('Enum', keys)(*range(len(keys)))# 带字典映射的,可以映射出各种类型,不局限于数字 def enum(**kwargs): return namedtuple('Enum', kwargs.keys())(*kwargs.values())。
7. c语言:输出枚举型变量的值,应该用什么格式说明
enum其实是用字符串来标志一些值(也就是枚举值)
只是从值的大小来考虑的话,
enum color{red,green,blue,white};
类似于:
#define red 0
#define green 1
#define blue 2
#define white 3
只不过这些宏定义都是属于color这个统一的类型的(枚举型)
所以想通过值来逆推出枚举的枚举元素名来。
如果一定要输出的话,只能这么做了:
switch((enum color)i)
{
case 0: printf("red\n");break;
case 1: printf("green\n");break;
case 2: printf("blue\n");break;
case 3: printf("white\n");break;
default: break;
}