首頁  >  文章  >  後端開發  >  為什麼我的 Switch 語句中出現「錯誤:跳到 case 標籤」?

為什麼我的 Switch 語句中出現「錯誤:跳到 case 標籤」?

Susan Sarandon
Susan Sarandon原創
2024-10-28 23:07:30872瀏覽

Why am I Getting the

診斷Switch 語句中的「錯誤:跳到case 標籤」

在編譯使用switch 語句的程式時,使用者可能會遇到以下錯誤訊息,「錯誤:跳到案例標籤。」此錯誤通常是由於switch case 區塊中的變數聲明位置錯誤而引起的。

了解 Switch Case 中的變數範圍

switch case 區塊中宣告的變數在後續 case 中仍可存取區塊,即使沒有明確初始化。如果變數未在各自的 case 區塊中正確初始化,此行為可能會導致意外結果。

變數作用域問題範例

考慮以下程式碼片段,其中嘗試在後續case 區塊中使用在一個case 區塊中聲明的變數:

<code class="cpp">#include <iostream>
int main() {
    int choice;
    std::cin >> choice;
    switch (choice) {
    case 1:
        int i = 0;
        break;
    case 2:  // Error occurs here
    }
}</code>

在此程式碼中,i 變數在case 1 區塊中宣告並初始化。但是,如果 choice 等於 2,編譯器將嘗試存取 case 2 區塊內的 i 變量,但不會對其進行初始化。這會導致「跳到 case 標籤」錯誤。

解決方案:在Switch Case 中使用區塊作用域

要解決此問題,您應該將每個switch case 區塊起來在顯式花括號區塊({}) 內。這將特定 case 區塊中聲明的任何變數的範圍限製到該區塊,從而防止從後續 case 區塊存取。

<code class="cpp">#include <iostream>
int main() {
    int choice;
    std::cin >> choice;
    switch (choice) {
    case 1: {
        int i = 0;
        break;
    }
    case 2:
        int j = 10;
        break;
    }
}</code>

透過使用區塊作用域,您可以確保 i 變數只能在以下範圍內存取和初始化case 1 區塊中,j 變數只能在 case 2 區塊中存取和初始化。這會在 switch 語句中建立正確且可預測的變數作用域。

透過了解 switch 語句中的變數作用域行為並正確使用區塊作用域,您可以避免「跳到 case 標籤」錯誤並確保正確的初始化以及變數的使用。

以上是為什麼我的 Switch 語句中出現「錯誤:跳到 case 標籤」?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn