枚举类型宽度?

Mic*_*man 1 c c# c++ size enumeration

快问.枚举类型有多宽?它们是表示枚举所需的最小宽度还是所有enum int?如果它们是整数,你可以改变枚举的宽度,还是你必须为每次出现输入强制转换?

xDD*_*xDD 6

(这适用于C++)

从标准:

枚举的基础类型是一个整数类型,可以表示枚举中定义的所有枚举器值.它是实现定义的,其中整数类型用作枚举的基础类型,除了基础类型不应大于int,除非枚举器的值不能适合int或unsigned int.如果枚举器列表为空,则基础类型就好像枚举具有值为0的单个枚举器.应用于枚举类型,枚举类型的对象或枚举器的sizeof()的值是sizeof()应用于基础类型.

在C++ 0x中,您可以定义枚举的基础类型,如下所示:

enum foo : unsigned int { bar, baz };
Run Code Online (Sandbox Code Playgroud)

另请注意,新的强类型枚举("枚举类")具有默认的基础类型int.