C/C++列舉enum分別列印輸出列舉子和列舉值的方法

無鞋童鞋發表於2017-08-02

  關於列舉列舉的基礎概念我這裡不再介紹,感興趣的同學可以查閱另一篇博文C/C++中列舉型別enum使用。這裡我主要提一下在除錯一個大型程式中遇到日誌列印中一個關於列舉輸出的小錯誤。
  我們知道列舉分為列舉子和列舉值,就相當於鍵與值的對應關係。例如下面的列舉變數:

enum Example {FIRST,SECOND,THIRD}; // 三個列舉子對應列舉值預設是0,1,2。

  那如何輸出列舉值和列舉子呢?
 1 輸出列舉值
  我們先看一個簡單的,輸出列舉值,其實非常簡單以整數形式輸出即可,如下:

printf("%d\n", FIRST); //輸出結果為:0

 2 輸出列舉子
  這裡有個很大的誤區,很多人會根據上面的輸出聯想到下面的方法:

printf("%s\n", (Example)1); // 想以字串形式輸出SECOND  ×

  這種方式是一個大大的錯誤,根本沒有此方法輸出列舉子,正確形式需要轉換一下關係,最終還是需要依靠條件判斷來輸出,程式如下:

    int i;
    scanf("%d", &i);
    switch (i)
    {
        case 0: printf("FIRST\n"); break;
        case 1: printf("SECOND\n"); break;
        case 1: printf("THIRD\n"); break;
        default:printf("NONE\n");
    }

  個人學習記錄,由於能力和時間有限,如果有錯誤望讀者糾正,謝謝!
  轉載請註明出處:http://blog.csdn.net/FX677588/article/details/76600033

相關文章