这是我的小程序:
enum Type
{
b = 1,
c = 2
};
int main()
{
Type b = b;
std::cout << b << std::endl;
return 0;
}
哪个输出 0。我可以断定上述定义由这些顺序步骤组成吗?
- 声明
b
为变量类型Type
- 该变量的定义和使用
0
默认值初始化 - 评估它的新值,包括变量本身(值为 0)
- 将该新值分配给变量。
而且,变量是否总是用 0 初始化,即使它们被显式初始化?
我的第二个问题是 - 如果它在指定示例中使用它的初始化列表中的变量,为什么我不会收到关于歧义的错误?编译器是否首先尝试b
在变量列表中查找,然后才检查声明的枚举?