我在玩代码时遇到了一个有趣的特性。我正在使用Eclipse CDT 4.5.2,并启用了Cygwin和C++ 14(-std = C++ 14)。中箱的变量初始化通常是禁止的,但下面的代码编译:SWITCH语句中DEFAULT后CASE中的C++变量初始化
switch(int switchStatement = 11)
{
default:
++j;
break; // break is optional, still compiles even if omitted
case 11:
int caseVariable = 0;
++j;
}
如果添加另一种情况是,那么除了“跳转到case标签”被提升。
switch(int switchStatement = 11)
{
default:
++j;
case 11:
int caseVariable = 0;
++j;
case 12: // exception
++j;
}
有人可以解释我是如何工作的吗?
重新打开:dupe没有解释其中一个片段的编译成功。 (我认为这是一个编译器错误。) – Bathsheba
它不工作,如果你添加一个休息到案件11? –
只有当变量声明在最后一个'case'块中时它才起作用吗? –