14

enumCについて質問です。

enumを次のように定義しました。

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

Hello hello;

int value = 3;  

次に、値を の値と比較する方法はHello?

例えば:

if(value == Hello3)
{
}

または、次のようにする必要があります。

if(value == Hello.Hello3)
{
}
4

2 に答える 2

27

この方法は正しいです:

 if (value == Hello3)
 {
 }

enum定数はタイプintです。

2 番目の構文は無効です。

于 2012-11-09T08:56:58.133 に答える
5

enumは構造体ではなく、メンバー名は対応するconstants. で定義されたこれらの名前は、 (あなたが考えているように) のようなenumデータ メンバーではありません。enumstruct

enumを使用して、名前付き整数定数のリストを定義するために使用されることを覚えておいてください#define

だからここにあなたの場合:

if(value == Hello3)
{
}

これは、コンパイル時Hello3に値3(に他ならない)に置き換えられるため、正しい比較方法です。int

たとえば、次のようにすることもできます。

Hello hello=2;
if(hello == Hello2)
{
}
于 2012-11-09T09:01:47.733 に答える