我在 SO 上看到一篇關于在 C 中使用布爾型別的帖子。其中一個答案列出了四種實作布爾型別的方法,第二種和第三種方法是:
typedef enum { false, true } bool;
和
typedef int bool;
enum { false, true };
第一個一開始讓我很困惑,因為我從未見過一個enum被用作型別的人。由于enum定義了整數常量,我認為它與第二個相同,但稍微有點混亂。
那么,使用enum作為型別是如何作業的呢?enum用作型別和使用整數型別之間是否有區別,在enum別處定義?最重要的是,為什么有人會enum用作型別?
uj5u.com熱心網友回復:
通常在編程中,enums用于創建定義的最終值的串列。并且因為booleans可以是trueor false,所以很適合以這種方式實作它。
您包含的第一個代碼位非常簡單,它定義了一個稱為boolan的型別enum,可以是true或false。true為什么在列舉中定義它是因為這樣在代碼中使用/false作為值時不會出錯。此外,還有一個原因,為什么false首先列出 - 在索引 0 和true索引 1 上。你能猜到嗎?...您可以通過其索引將enum元素轉換為int(意思是:當您使用false值時,您基本上使用 0)。
第二個代碼非常相似,它定義了 type bool,但是作為一個integer代替。那是因為這就是您通常bools在 C = 1 (或任何其他 int 獲取true)或 0 ( false) 中表示的方式。這里的定義enum再次只是為了防止在使用true和false作為值時出錯。再次以這種方式定位值是有原因的 - 多虧了它,您可以做if (true)或if (false)它會按預期作業(原因如上所述)。
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/419661.html
標籤:
上一篇:實作自定義輸入功能
