2012-08-29 92 views
0

按我的知识,枚举可以像怪异枚举使用

typedef enum 
{ 
    true, 
    false, 
    undefined  
}FLAGS; 

truefalse使用可用于像

int a = 1; 
if(a == true) 
    .... 
else if(a == false) 
    .... 

来到我的问题,我碰到一个枚举的使用来样,

FLAGS Options[] = {true, undefined}; 

即数组被声明为枚举类型。我不知道。请澄清我。

编辑::在上述场景中会发生什么。 (“\ n true:%d,false:%d,undefined:%d \ n”,true,false,undefined);

真:0,假:1,不确定的:2

为什么呢?

编辑2 :: 它是如何与int Options[] = {true, undefined};

+2

关于*究竟是什么*你没有任何想法? – 2012-08-29 07:02:58

+0

选项是一个包含两个FLAGS值的数组。 –

+0

你介意给出进一步的解释吗? – Kijan

回答

2

一种enum就像一个整数类型,用具有一堆命名文字的的额外的好处。没有什么能阻止你声明一个枚举值数组,它基本上只是一个整数数组。

2

的区别在于代码perectly罚款。你可以创建一个任意类型的数组 - 在这里你声明了一个包含两个元素的数组,每个元素的类型都是enum FLAGS

编辑:你似乎对“undefined”的含义感到困惑。它在技术上是而不是这是一个未定义的值,也不是C。Thar在这种情况下的保留关键字。

在上述场景中会发生什么情况。

prinf("\n true:%d, false:%d, undefined:%d\n", true, false, undefined); 

这将打印以下:

true:0, false:1, undefined:2 
+0

按顺序,true应该是0对不对? – Jeyaram

+1

@rjayavrp对,固定。奇怪的定义。 – 2012-08-29 07:11:26