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 + ypasa 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.