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
です。
2 番目の構文は無効です。
enum
は構造体ではなく、メンバー名は対応するconstants
. で定義されたこれらの名前は、 (あなたが考えているように) のようなenum
データ メンバーではありません。enum
struct
enum
を使用して、名前付き整数定数のリストを定義するために使用されることを覚えておいてください#define
。
だからここにあなたの場合:
if(value == Hello3)
{
}
これは、コンパイル時Hello3
に値3
(に他ならない)に置き換えられるため、正しい比較方法です。int
たとえば、次のようにすることもできます。
Hello hello=2;
if(hello == Hello2)
{
}