繁体   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