【问题标题】:wrong values outputted from enum [duplicate]从枚举输出的错误值[重复]
【发布时间】:2017-08-01 12:28:50
【问题描述】:

我正在尝试使用 (char) enum 存储我的排名,然后使用 cout 输出它们,但它没有正确输出。

#include <iostream>

using namespace std;    

enum rank : char {
    first = '1', second = '2', third = '3'
};

int main()
{
    // other code ...
    cout << rank::third;
    // other code ...
}

它输出51 !!!看这里 - http://ideone.com/8vHzQ5

这看起来像 ascii 值(?)所以我应该将它们转换回 char 或其他类型(当我已经针对该枚举编写 char 时为什么需要这样做),否则这里有什么问题?

【问题讨论】:

  • 是的,将其转回charenum 的值基本上是 ints。与int n='1'; std::cout &lt;&lt; n; 相同
  • 您还可以为std::ostream&amp; operator&lt;&lt; 创建重载,如参考页面底部的示例所示:en.cppreference.com/w/cpp/language/enum

标签: c++ enums


【解决方案1】:

在这种情况下,默认枚​​举值被视为int513的十进制ASCII值;如果你想打印3,你需要明确地转换它。

std::cout << static_cast<char>(rank::third);

【讨论】:

    猜你喜欢
    • 2012-08-31
    • 2012-12-28
    • 1970-01-01
    • 1970-01-01
    • 2016-03-05
    • 1970-01-01
    • 2017-09-04
    • 1970-01-01
    • 2019-03-02
    相关资源
    最近更新 更多