switchステートメントからこのケースラベルにジャンプできず、ジャンプは変数の初期化をバイパスします



Cant Jump From Switch Statement This Case Label



switchステートメントからこのケースラベルにジャンプできません
バイパス変数の初期化をスキップします

当時私はそれを書いていました。



switch(val){ case 1: ... break case 2: int b = 1 ... break case 3: ... break default: break }

in case 3 with defaultタイトルに2つのエラーがあります。
最後に、ブランチ内の変数を初期化したことがわかりました。

同じコードがVSで呼び出されます



エラーC2360「b」の初期化は「case」タグによってスキップされます
エラーC2361「デフォルト」タグは「b」の初期化をスキップします

1、最も簡単なのは、ケースを{}で囲むことです。

case 2:{ int b = 1 ... break }

2、関連する操作を関数に入れて、閲覧するのも便利です



case 2: func() break

3、スイッチの前に初期化を置きます

int b switch(val){ case 2: b = 1 ... break default: break }