Switch ステートメントの Case ラベルへのジャンプ エラー
コンパイル エラー「Jump to case ラベル」が発生した場合は、switch ステートメントの構造。このエラーは、中括弧 ({ }) で示される明示的なブロック区切り文字を使用せずに、あるケースで後続のケースに拡張される変数を宣言しようとすると発生します。
たとえば、次のコードを考えてみましょう。
<code class="cpp">#include <iostream> int main() { int choice; std::cin >> choice; switch(choice) { case 1: int i=0; break; case 2: // error here // Code relying on the existence of i } }</code>
この例では、ケース 1 の i の宣言に問題が生じています。ケース 2 では i が表示されますが、初期化されません。これは、初期化コードがそれぞれのケースに固有であるためです。したがって、選択肢が 2 の場合、後続のコードで i を使用すると、予期しない結果が生じる可能性があります。
この問題を解決するには、それぞれの場合に明示的なブロックを使用します。
<code class="cpp">switch(choice) { case 1: { int i=0; break; } case 2: { // Use of i only within this block } }</code>
あるいは、次のようにします。 switch ステートメントに似た goto ステートメントを利用できます。
<code class="cpp">int main() { if(rand() % 2) // Toss a coin goto end; int i = 42; end: // Similar scope and initialization issues as with switch, but with goto std::cout << i; }</code>
本質的に、明示的なブロックまたは goto の慎重な使用により、変数の宣言と初期化が意図したケースに確実にローカライズされ、誤った動作が防止されます。
以上がswitch ステートメントで「Jump to Case Label」エラーが発生するのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。