快速提问。枚举类型有多宽?它们是表示枚举所需的最小宽度还是所有enum int?如果它们是整数,你可以改变枚举的宽度,还是你必须为每次出现输入强制转换?
答案 0 :(得分:6)
(这是针对C ++)
来自标准:
枚举的基础类型 是一种可以代表的整体类型 中定义的所有枚举器值 枚举。它是 实现 - 定义哪个积分 type用作底层类型 列举除了 基础类型不应该更大 除了枚举器的值,否则比int 不适合int或 unsigned int。如果是枚举器列表 是空的,底层类型就好像 枚举只有一个 值为0的枚举器。值 sizeof()应用于枚举 type,枚举类型的对象, 或者一个普查员,是值的 sizeof()应用于底层 类型。
在C ++ 0x中,您可以定义枚举的基础类型,如下所示:
enum foo : unsigned int { bar, baz };
另请注意,新的强类型枚举(“enum class”)具有默认的基础类型int。
答案 1 :(得分:2)
在C和C ++中,它们是整数。类型转换不会在最轻微的情况下更改它们,除非您将它们更改为更窄的整数类型(char,short)。
答案 2 :(得分:2)
这与您标记此问题的语言不同。
在C和C ++ 03中,枚举的基础类型是实现定义。在C ++ 0x中,我们可以声明自己的基础类型,称为强类型枚举(或枚举类):
// declares an enum with underlying type `unsigned char`
enum class MyEnum : unsigned char {/*...*/};
答案 3 :(得分:1)
在C#中,您可以指定基础类型,如果未指定,则默认值为Int32
。
public enum ThirtyTwoBitsWide
{
This, Is, The, Default, Size
}
public enum EightBitsWide : byte
{
Explicitly, Specify, The, Underlying, Size
}