Jam*_*lis 27
枚举保证由整数表示,但实际类型(及其签名)与实现有关.
您可以通过为其中一个枚举数赋予负值来强制枚举由有符号类型表示:
enum SignedEnum { a = -1 };
Run Code Online (Sandbox Code Playgroud)
在C++ 0x中,可以显式指定枚举的基础类型:
enum ShortEnum : short { a };
Run Code Online (Sandbox Code Playgroud)
(C++ 0x还增加了对范围枚举的支持)
为了完整起见,我将在The C Programming Language,2nd ed中添加它.,枚举数被指定为具有类型int(第215页).K&R不是C标准,所以这不是ISO C编译器的规范,但它确实早于ISO C标准,所以从历史的角度来看它至少是有趣的.