为什么我要使用枚举作为类型?
Why would I use enum as a type?
我看到 post on SO 关于在 C 中使用布尔类型。其中一个答案列出了四种实现布尔类型的方法,第二种和第三种方法是:
typedef enum { false, true } bool;
和
typedef int bool;
enum { false, true };
第一个一开始让我感到困惑,因为我从未见过 enum
被用作类型。由于 enum
定义了整数常量,所以我认为它与第二个是同一回事,但更令人困惑。
那么,如何使用 enum
作为类型呢?使用 enum
作为类型和使用整数类型,在别处定义 enum
之间有区别吗?最重要的是,为什么有人会使用 enum
作为类型?
通常在编程中,enums
用于创建已定义最终值的列表。因为 booleans
可以是 true
或 false
,所以很适合这样实现。
您包含的第一个代码位非常简单,它将一个名为 bool
的类型定义为 enum
,可以是 true
或 false
。为什么在枚举中定义它是因为这样在代码中使用 true
/false
作为值时不会出现错误。此外,还有一个原因,为什么 false
列在第一位 - 在索引 0 上而 true
在索引 1 上。你能猜到吗? ...您可以通过其索引将 enum
元素转换为 int
(意思是:这样当您使用 false
值时,您基本上是在使用 0)。
第二个代码非常相似,它定义了类型 bool
,但定义为 integer
。那是因为这就是您通常在 C = 1(或任何其他 int 以获得 true
)或 0(false
)中表示 bools
的方式。 enum
这里的定义再次只是为了防止在使用 true
和 false
作为值时出现错误。同样,这些值以这种方式定位是有原因的——多亏了它,您只需执行 if (true)
或 if (false)
,它就会按预期工作(原因如上所述)。
我看到 post on SO 关于在 C 中使用布尔类型。其中一个答案列出了四种实现布尔类型的方法,第二种和第三种方法是:
typedef enum { false, true } bool;
和
typedef int bool;
enum { false, true };
第一个一开始让我感到困惑,因为我从未见过 enum
被用作类型。由于 enum
定义了整数常量,所以我认为它与第二个是同一回事,但更令人困惑。
那么,如何使用 enum
作为类型呢?使用 enum
作为类型和使用整数类型,在别处定义 enum
之间有区别吗?最重要的是,为什么有人会使用 enum
作为类型?
通常在编程中,enums
用于创建已定义最终值的列表。因为 booleans
可以是 true
或 false
,所以很适合这样实现。
您包含的第一个代码位非常简单,它将一个名为 bool
的类型定义为 enum
,可以是 true
或 false
。为什么在枚举中定义它是因为这样在代码中使用 true
/false
作为值时不会出现错误。此外,还有一个原因,为什么 false
列在第一位 - 在索引 0 上而 true
在索引 1 上。你能猜到吗? ...您可以通过其索引将 enum
元素转换为 int
(意思是:这样当您使用 false
值时,您基本上是在使用 0)。
第二个代码非常相似,它定义了类型 bool
,但定义为 integer
。那是因为这就是您通常在 C = 1(或任何其他 int 以获得 true
)或 0(false
)中表示 bools
的方式。 enum
这里的定义再次只是为了防止在使用 true
和 false
作为值时出现错误。同样,这些值以这种方式定位是有原因的——多亏了它,您只需执行 if (true)
或 if (false)
,它就会按预期工作(原因如上所述)。