【问题标题】:how to print an enumerated variable in C? [duplicate]如何在C中打印枚举变量? [复制]
【发布时间】:2014-09-24 04:26:27
【问题描述】:

我正在使用枚举类型声明。我无法打印。

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

#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;
}

【问题讨论】:

  • 使用printf("%d\r\n", week_end),因为monday在C语言中默认会被初始化为0。
  • 听说过谷歌吗?

标签: c enums


【解决方案1】:

有几种方法可以打印enum

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

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

    定义一个字符串数组。

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

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

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

【讨论】:

    【解决方案2】:

    你不能这样使用枚举,

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

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

    星期一=0;

    星期二=1;等等

    enum day week_st, week_end;
    

    您的这一行将声明两个对象枚举day,枚举器用于为变量提供常量值;

    不显示字符串。

    【讨论】:

      【解决方案3】:

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

      参考http://www.cplusplus.com/doc/tutorial/other_data_types/: “用 enum 声明的枚举类型的值可以隐式转换为整数类型 int,反之亦然。事实上,这种枚举的元素总是在内部分配一个整数等价物,它们成为别名。如果不是否则,与第一个可能值等效的整数值为 0,第二个可能值等效为 1,第三个可能值为 2,依此类推……因此,在上面定义的数据类型 colors_t 中,黑色将等效于0,蓝色相当于 1,绿色相当于 2,依此类推..."

      【讨论】:

        【解决方案4】:

        枚举类型是 int 所以尝试使用 int 格式说明符打印 Printf("%d",week_end);

        但是在你的代码中,如果条件被评估为假,所以它不会去打印语句

        【讨论】:

        • 你使用的方式也使用枚举是不正确的。
        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2017-09-09
        相关资源
        最近更新 更多