Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> Lập Trình C

Tại sao không khai báo biến trong switch statement C/C++?

Thực tế có thể khai báo biến trong switch, nhưng phải đặt trong khối mới (scope mới) bằng cặp ngoặc nhọn { }.

Ví dụ đúng

#include <iostream>
using namespace std;
int main() {
    int i = 10;
    switch(i) {
        case 2:
            // code
            break;
        case 10: {
            int x = 13; // Khai báo trong khối mới
            cout << x;
        }
    }
    return 0;
}
13

Tại sao cần khối mới?

case bản chất là nhãn (label), switch nhảy đến nhãn (giống goto). Nếu khai báo biến ngay trong scope của switch (không có { }), việc nhảy qua lệnh khai báo (khi case khác match) vi phạm quy tắc C/C++: không được nhảy qua khởi tạo biến trong cùng scope.

Khuyến nghị: Luôn bọc code trong case bằng { } nếu cần khai báo biến.