C/C++枚举enum分别打印输出枚举子和枚举值的方法

  关于枚举枚举的基础概念我这里不再介绍,感兴趣的同学可以查阅另一篇博文。这里我主要提一下在调试一个大型程序中遇到日志打印中一个关于枚举输出的小错误。   我们知道枚举分为枚举子和枚举值,就相当于键与值的对应关系。例如下面的枚举变量:

enum Example {FIRST,SECOND,THIRD}; // 三个枚举子对应枚举值默认是0,1,2。

  那如何输出枚举值和枚举子呢?  1 输出枚举值   我们先看一个简单的,输出枚举值,其实非常简单以整数形式输出即可,如下:

printf("%d
", FIRST); //输出结果为:0

 2 输出枚举子   这里有个很大的误区,很多人会根据上面的输出联想到下面的方法:

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

  这种方式是一个大大的错误,根本没有此方法输出枚举子,正确形式需要转换一下关系,最终还是需要依靠条件判断来输出,程序如下:

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

经验分享 程序员 微信小程序 职场和发展