Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> การเขียนโปรแกรม C

ทำไมจึงไม่สามารถประกาศตัวแปรใน switch statement ใน C/C++ ได้?

จริงๆ แล้วประกาศตัวแปรใน switch statement ได้ แต่ต้องอยู่ในขอบเขตใหม่ (new scope) ภายใน case label

ตัวอย่างที่ถูกต้อง

#include <iostream>
using namespace std;
int main() {
    int i = 10;
    switch (i) {
        case 2:
            // some code
            break;
        case 10: {
            int x = 13;
            cout << x;
        }
    }
    return 0;
}

ผลลัพธ์

13

หากประกาศตัวแปรนอก block ใน case เดียวกัน จะเกิดข้อผิดพลาด เพราะ goto case label ทำให้ข้ามการประกาศตัวแปรโลคัลได้ ซึ่งอาจนำไปสู่การใช้ตัวแปรที่ยังไม่ได้เริ่มต้นค่า