Avatar ·

¿Por qué en C++ no se pueden declarar variables dentro de un bloque switch sin llaves?

¡Hola a todos! Empecé a estudiar C++ y me encontré con un error muy extraño al usar switch. Necesitaba escribir una calculadora simple que realiza diferentes operaciones según el carácter ingresado. Aquí está mi código: ```cpp #include using namespace std; int main() { char op; int a = 10, b = 5; cout << "Enter operation (+, -, *, /): "; cin >> op; switch (op) { case '+': int result = a + b; // ¡Error! cout << result; break; case '-': // ... break; } return 0; } ``` El compilador muestra un error: "cannot jump from switch statement to this case label" o algo como "initialization of 'result' is skipped by 'case' label". Entiendo que switch funciona como goto y salta a la etiqueta correspondiente, pero ¿por qué no se puede declarar una variable directamente dentro de case? Después de todo, la escribo después de los dos puntos, antes del siguiente break. ¿Cuál es el problema y cómo se declara correctamente?