运营商LT;<模糊打印基础类型为short的枚举值

时间:2016-01-26 22:58:22

标签: c++ enums

非常简单。为什么会这样?所有其他整数类型都可以正常工作。

enum : unsigned short {
    ushort_min = static_cast<unsigned short>(0u),
    ushort_max = static_cast<unsigned short>(~0u)
};

enum : short {
    short_min = short(ushort_max << (sizeof(short) * char_bit - 1)),
    short_max = short(ushort_max >> 1)
};

std::cout << short_min; // BOOM

1 个答案:

答案 0 :(得分:1)

示例代码使用gcc编译时没有错误。这里的答案可能是“升级你的编译器”:

http://www.serverA.com/register/firstname=john&lastname=eddy