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 initialization
gì? - Tại sao bộ khởi tạo đầu tiên
x + y
vượ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 initialization
gì?
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.