这是我的小程序:在计算初始值时是否定义了变量?
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
,然后才检查声明的枚举?
不要这样做。你只会把自己和任何必须维护代码的人混淆起来,这些代码将来会包含你。 –
当然,你是对的!我只是试图理解该例子中的语言逻辑。 –