Switch 語句中跳到case 標籤錯誤
當遇到編譯錯誤「Jump to case label」時,必須仔細檢查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 的聲明。雖然 i 在情況 2 中可見,但它不會被初始化。這是因為初始化程式碼是特定於每種情況的。因此,如果選擇為 2,在後續程式碼中使用 i 可能會導致意外結果。
要解決此問題,請為每種情況使用明確區塊:
<code class="cpp">switch(choice) { case 1: { int i=0; break; } case 2: { // Use of i only within this block } }</code>
或者,可以使用goto 語句,類似於switch 語句:
<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中文網其他相關文章!