奇怪的枚举用法

时间:2012-08-29 07:01:47

标签: c arrays enums

据我所知,enum可以像

一样使用
typedef enum
{
   true,
   false,
   undefined    
}FLAGS;

truefalse可以像

一样使用
int a = 1;
if(a == true)
   ....
else if(a == false)
   ....

谈到我的问题,我遇到了类似的枚举,

FLAGS Options[] = {true, undefined};

表示数组的类型为enum。我不知道。请澄清一下。

编辑::在上述场景中会发生什么。

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

true:0,false:1,undefined:2

为什么?

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

的区别

2 个答案:

答案 0 :(得分:2)

该代码非常正常。你可以创建一个任何类型的数组 - 在这里你声明了一个包含两个元素的数组,每个元素的类型都是enum FLAGS

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

  

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

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

这将打印以下内容:

true:0, false:1, undefined:2

答案 1 :(得分:2)

enum就像一个整数类型,还有一堆命名的文字。没有什么可以阻止你声明一个枚举值数组,它基本上只是一个整数数组。