Cách khắc phục lỗi 'Khởi tạo chéo nhãn trường hợp' trong C++

Cach Khac Phuc Loi Khoi Tao Cheo Nhan Truong Hop Trong C



Câu lệnh switch là giải pháp thay thế tốt nhất cho câu lệnh if-else-if dài, vì nó làm giảm độ dài của mã và mang lại sự rõ ràng hơn. Giá trị được đánh giá bằng cách sử dụng câu lệnh switch và được kiểm tra dựa trên các giá trị của từng nhãn trường hợp. Nếu tìm thấy kết quả khớp, mã sẽ thực thi trước dấu ngắt, nếu không, mã sẽ thực thi mã sau “mặc định”.

Nguyên nhân gây ra lỗi 'Chuyển sang trường hợp nhãn vượt qua khởi tạo' trong C++

Trong khi sử dụng câu lệnh switch, trong C++, một lỗi phổ biến có thể gặp là 'Khởi tạo chéo nhãn chuyển sang trường hợp'. Lỗi này thường xuất hiện do khai báo sai một biến trong nhãn case. Đây là một chương trình ví dụ để minh họa lỗi 'Khởi tạo chéo nhãn chuyển sang trường hợp' trong C++:







#include
#include
sử dụng không gian tên std;
vô hiệu menu_display ( ) ;
lựa chọn int_menu ( ) ;
void get_two_operands ( int & n, int & tôi ) ;
int thêm ( int n, int m ) ;
trừ int ( int n, int m ) ;


int chính ( )
{
lựa chọn int;

LÀM
{
menu_display ( ) ;
lựa chọn = lựa chọn_menu ( ) ;
int x, y;
công tắc ( lựa chọn )
{
trường hợp 1 :

get_two_operands ( x, y ) ;
int Tổng = thêm ( x, y ) ;
cout << x << '+' << << ' = ' << Tổng << cuối cùng;

phá vỡ ;

trường hợp 2 :

get_two_operands ( x, y ) ;

int khác biệt = trừ ( x, y ) ;
cout << x << '-' << << ' = ' << khác biệt << cuối cùng;

phá vỡ ;
mặc định:;
}

} trong khi ( lựa chọn ! = 3 ) ;

cout << 'Chương trình đã kết thúc' << cuối cùng;

trở lại 0 ;
}


vô hiệu menu_display ( )
{
cout << cuối cùng;
cout << 'Máy tính cơ bản' << cuối cùng;
cout << ' 1. Thêm (+)' << cuối cùng;
cout << ' 2. Trừ (-)' << cuối cùng;
cout << '3. Thoát' << cuối cùng;

cout << cuối cùng;
}

int get_menu_choice ( )
{
lựa chọn int;
cout << 'Lựa chọn không hợp lệ Thử lại:' ;
Ăn >> lựa chọn;

trong khi ( ( ( lựa chọn < 1 ) || ( lựa chọn > 3 ) ) && ( ! cin.fail ( ) ) )
{
cout << ': ' ;
Ăn >> lựa chọn;
}
nếu như ( cin.fail ( ) )
{
cout << 'Lỗi ' << cuối cùng;
lối ra ( 1 ) ;
}
trở lại lựa chọn;
}

void get_two_operands ( int & n, int & tôi )
{
cout << 'Cho hai toán hạng' << cuối cùng;
cout << 'Toán tử đầu tiên:' ;
Ăn >> N;
cout << 'Toán hạng thứ hai:' ;
Ăn >> m;

}


int thêm ( int n, int m )
{
trở lại ( n + m ) ;
}

trừ int ( int n, int m )
{
trở lại ( n - m ) ;
}


Khi chương trình này được thực thi, nó sẽ trả về lỗi 'Chuyển đến nhãn trường hợp'. Đây là một lỗi biên dịch.



Lỗi này xuất hiện do khai báo biến bên trong câu lệnh case mà không có dấu ngoặc kèm theo. Trường hợp này chỉ là một nhãn nên nó không có khả năng hạn chế tính khả dụng của các thông số được ghi bên dưới nó. Khi đoạn mã trên được thực thi, các biến của trường hợp 1 có thể được truy cập bởi trường hợp 2 và nó sẽ xuất hiện dưới dạng chưa được khởi tạo dẫn đến lỗi.







Cách khắc phục lỗi 'Khởi tạo chéo nhãn trường hợp' trong C++

Lỗi này có thể được khắc phục bằng cách sử dụng dấu ngoặc bên trong khối trường hợp, điều này sẽ tạo ra một phạm vi khép kín và các tham số của các khối trường hợp khác nhau sẽ không bị thao túng.

Mã gỡ lỗi

Đây là mã được sửa lỗi cho lỗi trên. Lỗi được khắc phục bằng cách đặt dữ liệu theo các trường hợp trong ngoặc:



#include
#include
sử dụng không gian tên std;
vô hiệu menu_display ( ) ;
lựa chọn int_menu ( ) ;
void get_two_operands ( int & n, int & tôi ) ;
int thêm ( int n, int m ) ;
trừ int ( int n, int m ) ;


int chính ( )
{
lựa chọn int;

LÀM
{
menu_display ( ) ;
lựa chọn = lựa chọn_menu ( ) ;
int x, y;
công tắc ( lựa chọn )
{
trường hợp 1 :
{
get_two_operands ( x, y ) ;
int Tổng = thêm ( x, y ) ;
cout << x << '+' << << ' = ' << Tổng << cuối cùng;
}
phá vỡ ;
trường hợp 2 :
{
get_two_operands ( x, y ) ;
int khác biệt = trừ ( x, y ) ;
cout << x << '-' << << ' = ' << khác biệt << cuối cùng;
}
phá vỡ ;
mặc định:;
}

} trong khi ( lựa chọn ! = 3 ) ;

cout << 'Chương trình đã kết thúc' << cuối cùng;

trở lại 0 ;
}


vô hiệu menu_display ( )
{
cout << cuối cùng;
cout << 'Máy tính cơ bản' << cuối cùng;
cout << ' 1. Thêm (+)' << cuối cùng;
cout << ' 2. Trừ (-)' << cuối cùng;
cout << '3. Thoát' << cuối cùng;
cout << cuối cùng;
}

lựa chọn int_menu ( )
{
lựa chọn int;
cout << 'Chọn thao tác:' ;
Ăn >> lựa chọn;

trong khi ( ( ( lựa chọn < 1 ) || ( lựa chọn > 3 ) ) && ( ! cin.fail ( ) ) )
{
cout << 'Lựa chọn không hợp lệ Thử lại:' ;
Ăn >> lựa chọn;
}
nếu như ( cin.fail ( ) )
{
cout << 'Lỗi' << cuối cùng;
lối ra ( 1 ) ;
}
trở lại lựa chọn;
}

void get_two_operands ( int & n, int & tôi )
{
cout << 'Cho hai toán hạng' << cuối cùng;
cout << 'Toán tử đầu tiên:' ;
Ăn >> N;
cout << 'Toán hạng thứ hai:' ;
Ăn >> m;

}


int thêm ( int n, int m )
{
trở lại ( n + m ) ;
}

trừ int ( int n, int m )
{
trở lại ( n - m ) ;
}


Sau khi sử dụng dấu ngoặc nhọn trong các khối chữ của mã, lỗi đã được sửa và đầu ra được hiển thị:

Phần kết luận

Câu lệnh switch là giải pháp thay thế tốt nhất cho câu lệnh if-else-if dài, vì nó làm giảm độ dài của mã và mang lại sự rõ ràng hơn. Trong khi sử dụng câu lệnh switch, trong C++, một lỗi biên dịch phổ biến có thể được quan sát thấy là 'Khởi tạo chéo nhãn chuyển sang trường hợp'. Lỗi này thường xuất hiện do khai báo sai một biến trong nhãn case. Điều này có thể được khắc phục bằng cách sử dụng dấu ngoặc bao quanh dữ liệu trong các khối chữ hoa.