如何在C中打印枚举变量?

时间:2014-09-24 04:26:27

标签: c enums

我使用的是枚举类型声明。我无法打印出来。

到目前为止,我已经编写了以下代码。问题是如何打印枚举类型变量?

#include <stdio.h>
int main()    
{    
    enum day {monday,tuesday,wednwsday,thrusday,friday,saturday,sunday};    
    enum day week_st, week_end;
    week_st = monday;
    week_end = friday;
    if(week_st == monday)
    {
        printf("%s\n",week_end);
    }
    return 0;
}

4 个答案:

答案 0 :(得分:1)

你不能那样使用枚举,

 enum day {monday,tuesday,wednwsday,thrusday,friday,saturday,sunday};

你的这一行会初始化像这样的值

  

周一= 0;

     

星期二= 1;等等

enum day week_st, week_end;

你的这一行将声明两个对象枚举day,枚举器用于给变量赋予常量值;

不显示字符串。

答案 1 :(得分:1)

有几种方法可以打印enum

  1. 将其打印为整数。这是一个简单的选择。

    printf("%d",week_end);
    
  2. 打印它的字符串表示形式。此选项需要一种方法将enum的整数值映射到字符串。

    定义一个字符串数组。

    char const* weekDays[] = {"Monday", ..., "Saturday", "Sunday"};
    

    使用字符串数组和枚举来打印字符串。

    printf("%s",weekDays[week_end]);
    

答案 2 :(得分:1)

枚举不是字符串。 printf(&#34;%d&#34;,week_end)将输出:4

参考http://www.cplusplus.com/doc/tutorial/other_data_types/: &#34;使用枚举声明的枚举类型的值可以隐式转换为整数类型int,反之亦然。事实上,这种枚举的元素总是在内部分配一个整数数字等价,它们成为别名。如果没有另外指定,则等于第一个可能值的整数值为0,等于第二个的整数值为1,第三个为2,依此类推...因此,在上面定义的数据类型colors_t中,黑色等于0,蓝色等于1,绿色等于2,依此类推......&#34;

答案 3 :(得分:0)

枚举类型是int,因此请尝试使用int的格式说明符进行打印 的printf( “%d”,week_end);

但是在你的代码中,如果条件被评估为false,那么它就不会去打印语句