Рассмотрим следующий код:
#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++ жалуется crosses initialization of 'int r'
. Мои вопросы:
- Что такое
crosses initialization
? - Почему первый инициализатор
x + y
передает компиляцию, но позже не удалось? - В чем проблемы так называемого
crosses initialization
?
ИЗМЕНИТЬ:
Я знаю, что я должен использовать скобки, чтобы указать область r
, но я хочу знать, почему, например, почему не-POD не может быть определен в операторе переключения нескольких случаев.
Спасибо.