簡體   English   中英

在C中使用枚舉

[英]Use of enums in c

我有這個枚舉:

  enum Seasons{
  winter,spring,summer,autumn
  };

該代碼將做什么?

 enum Seasons curr_season;
 curr_season = autumn;
 curr_season = 19;

謝謝!

enum Seasons{
    winter,spring,summer,autumn
};

上面創建了以下內容

winter=0, spring=1, summer=2 and autumn=3

注意: enums只是整數! ..也可以取負數!

enum Seasons curr_season;
curr_season = autumn;
/* curr_season will now have 3 assigned */

curr_season = 19;
/* curr_season will now have 19 assigned */

您可以運行以下代碼進行檢查!

#include <stdio.h>

enum Seasons{
        winter,spring,summer,autumn
};

void print_seanons(void)
{
    printf("winter = %d \n", winter);
    printf("spring = %d \n", spring);
    printf("summer = %d \n", summer);
    printf("autumn = %d \n", autumn);
    return;
}

int main(void)
{
    enum Seasons curr_season;
    print_seanons();

    curr_season = autumn;
    printf("curr_season = %d \n", curr_season);
    curr_season = 19; 
    printf("curr_season = %d \n", curr_season);
    return 0;

}

枚舉常量在c中的類型為int 盡管enum並非顯式為int類型,但枚舉類型和int之間的轉換是靜默的。 通常沒有對枚舉的約束檢查,因此您的代碼在功能上等效於:

int curr_season;
curr_season = 3;
curr_season = 19;

枚舉是整數值,因此它將為curr_season分配值19。

交叉使用(將整數值分配給枚舉)被認為是不良的編程習慣,應避免使用。

暫無
暫無

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

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