如何比较枚举值

9 c enums

我有一个关于enumC. 的问题

enum用以下方式定义了一个:

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

Hello hello;

int value = 3;  
Run Code Online (Sandbox Code Playgroud)

那么如何将值与值进行比较Hello

例如:

if(value == Hello3)
{
}
Run Code Online (Sandbox Code Playgroud)

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

if(value == Hello.Hello3)
{
}
Run Code Online (Sandbox Code Playgroud)

oua*_*uah 22

这种方式是正确的:

 if (value == Hello3)
 {
 }
Run Code Online (Sandbox Code Playgroud)

enum常量是类型int.

你的第二个结构是无效的.


Omk*_*ant 6

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

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

所以在你的情况下:

if(value == Hello3)
{
}
Run Code Online (Sandbox Code Playgroud)

这是正确的比较方法,因为它在编译时替换Hello3为值3(只不过是int)。

例如你也可以这样做:

Hello hello=2;
if(hello == Hello2)
{
}
Run Code Online (Sandbox Code Playgroud)