没有花括号的枚举形式

c00*_*0fd 5 c++ visual-studio-2017

我今天亲眼目睹了这样一种形式enum,在VS 2017下编译:

enum ens en1, en2, en3;
Run Code Online (Sandbox Code Playgroud)

然后它被用作这样的:

int n = en2;
Run Code Online (Sandbox Code Playgroud)

所以我的问题是,enum它的形式是什么以及n后来为什么会这样0


实例:

enum ens en1, en2, en3;

int main()
{
    int n = en2;
}
Run Code Online (Sandbox Code Playgroud)

使用默认编译器选项编译而不发出警告

use*_*670 3

此示例不正确,因为枚举的声明必须包含底层类型或项目列表。这也意味着它不能与变量声明结合使用。固定变体:

enum ens: int; // ens is a complete type at this point
enum ens en1, en2, en3; // en1 en2 en3 are global variables of enum ens type

// alternative "traditional" enum definition with empty list of items:
enum ens{} en1, en2, en3;
Run Code Online (Sandbox Code Playgroud)

int n = en2;等于n0,因为它en2是一个全局变量并且隐式初始化为 0。