C 如何比较枚举值

C 如何比较枚举值,c,enums,C,Enums,我有一个关于enumC的问题 我用以下方式定义了一个enum: typedef enum { Hello1 = 1, Hello2 = 2, Hello3 = 3 }Hello Hello hello; int value = 3; 那么如何将该值与Hello中的值进行比较 例如: if(value == Hello3) { } 或者我应该像下面这样做: if(value == Hello.Hello3) { } 这样做是正确的: if (value ==

我有一个关于
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)
{
}
这样做是正确的:

 if (value == Hello3)
 {
 }
enum
常量的类型为
int


第二个构造无效。

enum
不是结构,成员名称只是相应的
常量的名称。
在
enum
中定义的这些名称与
struct
中的
enum
不同(如您所想)

请记住,
enum
用于定义命名整数常量的列表,我们也可以使用
#define
来定义这些常量

因此,在您的案例中:

if(value == Hello3)
{
}
这是比较的正确方法,因为它在编译时将
Hello3
替换为值
3
(这只是
int

例如,您也可以这样做:

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

我注意到你最近在这里问了很多关于C的基本问题,也许是时候找一本关于C的入门书了?通过这种方式,你可以更快地学习,而不是通过这里的问答反复地学习。我可以建议,由语言的创造者来做吗?这不是一本大书(因为C不是一门大语言),而且这些例子很有趣。好的,我想你是对的,我确实需要读一本C语言的书,任何你推荐的书?这里有一个非常好的推荐书列表: