Considere el siguiente código:
#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 ++ se queja crosses initialization of 'int r'
. Mis preguntas son:
- ¿Qué es
crosses initialization
? - ¿Por qué el primer inicializador
x + y
pasa la compilación, pero el último falla? - ¿Cuáles son los problemas de los llamados
crosses initialization
?
Sé que debería usar corchetes para especificar el alcance de r
, pero quiero saber por qué, por ejemplo, por qué no se pudo definir no POD en una declaración de cambio de varios casos.