コードで遊んでいるときに面白い特殊性が発生しました。私はCygwinとC++ 14でEclipse CDT 4.5.2を使用しています(-std = C++ 14)。 CASEの内部変数の初期化は、通常は禁止さが、次のコードがコンパイルされます。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;
}
別のケースが追加された場合は、例外「ジャンプの場合にラベルが」発生します。
switch(int switchStatement = 11)
{
default:
++j;
case 11:
int caseVariable = 0;
++j;
case 12: // exception
++j;
}
誰かがどのようにすべての作品を説明することができますか?
Reopened:dupeはスニペットの1つのコンパイルの成功を説明しませんでした。 (私はそれがコンパイラのバグだと思う) – Bathsheba
ケース11にブレークを追加すると機能しませんか? –
変数宣言が最後の 'case'ブロックにある場合にのみ機能しますか? –