【问题标题】:weird enum usage奇怪的枚举用法
【发布时间】:2012-08-29 07:01:47
【问题描述】:

据我所知,枚举可以像这样使用

typedef enum
{
   true,
   false,
   undefined    
}FLAGS;

truefalse 可以像这样使用

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

谈到我的问题,我遇到了一个枚举用法,例如,

FLAGS Options[] = {true, undefined};

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

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

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

真:0,假:1,未定义:2

为什么?

编辑 2::int Options[] = {true, undefined};有何不同

【问题讨论】:

  • 关于究竟是什么你不知道吗?
  • Options 是一个包含两个 FLAGS 类型值的数组。
  • 您介意进一步解释吗?
  • 使用枚举作为数组。在上述情况下它将做什么。
  • int Options[]FLAGS Options[] 仅在数组类型上有所不同。两者都是允许的,因为枚举值可以转换为int(但请注意,true==0false==1 会让所有人感到困惑,因为通常情况正好相反).

标签: c arrays enums


【解决方案1】:

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

【讨论】:

    【解决方案2】:

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

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

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

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

    这将打印以下内容:

    true:0, false:1, undefined:2
    

    【讨论】:

      猜你喜欢
      • 2012-11-15
      • 2017-07-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多