Hãy xem xét đoạn mã sau:
#include <iostream>
using namespace std;
int main()
{
int x, y, i;
cin >> x >> y >> i;
switch(i) {
case 1:
// int r = x + y; -- OK
int r = 1; // Failed to Compile
cout << r;
break;
case 2:
r = x - y;
cout << r;
break;
};
}
G ++ phàn nàn crosses initialization of 'int r'. Câu hỏi của tôi là:
- Là
crosses initializationgì? - Tại sao bộ khởi tạo đầu tiên
x + yvượt qua quá trình biên dịch, nhưng bộ khởi tạo sau không thành công? - Những vấn đề của cái gọi là
crosses initializationgì?
Tôi biết tôi nên sử dụng dấu ngoặc để chỉ định phạm vi r, nhưng tôi muốn biết tại sao, ví dụ: tại sao không phải POD không thể được xác định trong câu lệnh chuyển đổi nhiều trường hợp.