如何比较枚举值

时间:2012-11-09 08:56:16

标签: c enums

我对enum C。

有疑问

我通过以下方式定义了enum

typedef enum
{
    Hello1 = 1,
    Hello2 = 2,
    Hello3 = 3
}Hello

Hello hello;

int value = 3;  

然后如何将该值与Hello中的值进行比较?

例如:

if(value == Hello3)
{
}

或者我应该像下面这样做:

if(value == Hello.Hello3)
{
}

2 个答案:

答案 0 :(得分:21)

这种方式是正确的:

 if (value == Hello3)
 {
 }

enum常量的类型为int

你的第二个构造无效。

答案 1 :(得分:4)

enum不是结构,成员名称只是相应constants的名称。 enum中定义的这些名称不是enumstruct的数据成员(正如您所想的那样)。

所以请记住enum用于定义命名整数常量列表,我们也可以使用#define来完成。

所以在你的情况下:

if(value == Hello3)
{
}

这是比较的正确方法,因为它在编译时将Hello3替换为值3(除int之外的任何内容)。

例如你也可以这样做:

Hello hello=2;
if(hello == Hello2)
{
}