我在玩代碼時遇到了一個有趣的特性。我正在使用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'塊中時它才起作用嗎? –