enum是什么东东?

bykai 2003-10-16 08:03:47
举个例子
class a
{
public:
enum sty
{
solidlint=1,d=2,c=3....
};
};
什么意思?
...全文
108 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
yintongshun 2003-10-16
  • 打赏
  • 举报
回复
枚举typedef enum {
NET_DEVICECONNET_STATE_CONNECTED=1,
NET_DEVICECONNET_STATE_BUSY=2,
NET_DEVICECONNET_STATE_DISCONNECT=4,
NET_DEVICECONNET_STATE_CONNECTCHANGED=8
}NetDeviceConnectState ;
keansun 2003-10-16
  • 打赏
  • 举报
回复
学吧:
8.2 枚举类型
2002:2:27


1.枚举类型
到目前为止, 我们已经学会了基本类型。 例如, 整型, 以及诸如结构之类的构造类型。 我们还讨论过联合类型。 现在, 我们就要来学习一种新的类型: 枚举。

C 语言程序中用作标志的变量的性质之一是, 它通常被赋值为两个值之一: 或者是真, 或者是假。

为了防止疏忽地把真或假之外的值赋给了作为标志使用的变量, 我们该怎么办呢? 再说, 这样的变量通常说明成 int 或 short int 类型, 它们在程序中的作用也不会是明确的。

如果我们定义了一个标志类型的变量, 那么, 是否有什么方法能让我们指定, 说明成这种类型的变量只能被赋值为真或假吗?

这种能力正好由枚举数据类型提供了。
枚举数据类型的定义必须以关键字 enum 开始。紧跟在这个关键字后面的是枚举数据类型的名字。然后是可以赋值给此类型的值表。

怎样定义一个枚举数据类型呢? 我们来看一个例子吧!

C 语言的语句 enum flag { 真 , 假 }; 定义了一个数据类型 flag。

在程序中, 这个数据类型可以被赋值为真或假, 而不能是其它的值。

为了说明一个 enum flag 类型的变量, 我们必须再次使用关键字 enum,其后是枚举类型名, 再后面是变量表。
因此, 语句 enum flag end_of_data, match_found; 定义了两个 flag 类型的变量──end_of_data 和 match_found。

注意: 能够赋值给这些变量的可能的值是真和假, 或者其它说明成同一类型的另一个枚举变量的值。

因此, 下面的语句 end_of_data = 真 ; 是有效的。语句 if (match_found == 假 ) ... 也是有效的。

C 编译器是怎样处理枚举值的呢?

C 编译器实际上把枚举值看成常量来对待。编译器从表中第一个名字开始, 把从 0 开始的连续整数依次赋值给这些名字。

假定我们定义了一个枚举类型:
enum direction { up, down, left, right };
已赋值给这些名字的整数值如下表所示:

up  down  left  right
0   1   2   3

假如我们执行了如下那样的语句:
  enum direction this_direct;
  this_direct = down;
那么, 赋值给 this_direct 的是值 1。(而不是名字 "down")

如果希望某个枚举值具有一个指定的整数值, 那么可以在定义数据类型时, 把这个整数值赋值给那个枚举值。
表中随后出现的枚举值将被顺序地赋值为从该整数值+1开始的连续整数值。

假定我们定义了一个类型 direction:
  enum direction { up,down, left = 10, right};
编译器把值 0 赋给 up, 1 赋给 down, 而把 10 赋给 left, 因为它被明显地赋以这个值。 此后, 由于 right 在表中是紧跟在 left 之后的, 故它被赋以 11。

up  down  left  right
0   1   10   11

在用枚举类型变量写程序时, 不要依赖枚举值是作为整型常量处理的这一事实。取而代之的, 应该把这些变量当作特定的变量类型来对待。

在定义枚举类型时, 允许的变化形式与定义结构时允许的那些类似: 在定义类型时, 可以省略数据类型名字, 并且说明某种特定枚举数据类型的变量。作为一个例子, 语句
enum { east, west, south, north } location;
定义了一个 (没有名字的) 枚举数据类型, 并且说明了一个该类型的变量 location。

我们还应该注意:如果考虑到作用域, 那么, 枚举类型定义的作用域是与结构以及变量定义的作用域类似的。顺便说一下, 在定义枚举数据类型时, 必须确保该枚举值的名字在同一作用域内定义的其它变量和枚举值的名字之间是唯一的。
luckyboy1979 2003-10-16
  • 打赏
  • 举报
回复
枚举,C的书一定有
Viconia 2003-10-16
  • 打赏
  • 举报
回复
枚举类型
C语言的书上就有介绍
csdmy 2003-10-16
  • 打赏
  • 举报
回复
枚举类型啊,好多书上都有啊,好像VB也是这个
Darlinton 2003-10-16
  • 打赏
  • 举报
回复
那个是枚举型。用法可参看任何一本讲C++语言的书。

16,471

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC相关问题讨论
社区管理员
  • 基础类社区
  • Web++
  • encoderlee
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

        VC/MFC社区版块或许是CSDN最“古老”的版块了,记忆之中,与CSDN的年龄几乎差不多。随着时间的推移,MFC技术渐渐的偏离了开发主流,若干年之后的今天,当我们面对着微软的这个经典之笔,内心充满着敬意,那些曾经的记忆,可以说代表着二十年前曾经的辉煌……
        向经典致敬,或许是老一代程序员内心里面难以释怀的感受。互联网大行其道的今天,我们期待着MFC技术能够恢复其曾经的辉煌,或许这个期待会永远成为一种“梦想”,或许一切皆有可能……
        我们希望这个版块可以很好的适配Web时代,期待更好的互联网技术能够使得MFC技术框架得以重现活力,……

试试用AI创作助手写篇文章吧