簡體   English   中英

枚舉的樂趣:在 C 中是否允許將變量定義為枚舉類型,然后將變量初始化為枚舉中不包含的值?

[英]Fun with enums: in C is it allowed to define a variable as an enum type, then initialize the variable to a value not contained in the enum?

在以下簡短的代碼示例中,變量被定義為特定的枚舉類型,然后初始化為該枚舉類型中不包含的值。 這甚至允許嗎? 如果是這樣,是否有任何可能的充分理由這樣做? 謝謝!

typedef enum
{
  element_zero = 0;
  element_one = 1;
  element_two = 2;
} enum_triple;

typedef enum
{
  element_five = 5;
} enum_single;

enum_single return_value = (enum_single)element_zero;

關於 C 和 C 編程背后的理念需要記住的幾件事:

  • 它是 1970 年代初期的產品;
  • 它的開發主要是為了實現 Unix 操作系統;
  • 它避開高級抽象以換取速度;
  • 它假定程序員總是知道他或她在做什么;
  • 它假定程序員處於最佳狀態,知道是否需要執行任何類型的邊界或范圍檢查,並且足夠聰明地編寫代碼來執行該檢查;

C 中的枚舉是表示不一定有序的值集的便捷方式,但僅此而已。 它們不是 C 中的高級抽象,就像它們在 Java 或 C# 中一樣。 枚舉常量不依賴於任何特定的枚舉類型,枚舉類型的對象可以采用為它們定義的枚舉常量集之外的值。

它們比其他任何東西都更方便。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM