¿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?
No answers yet.
Inicia sesión para dejar una respuesta
Blogs
Refactorización de código legacy en Java: guía paso a paso de la A a la Z
Interfaces en C++: Cómo declararlas sin volverse loco
Error típico de TypeScript: la propiedad 'value' no existe en HTMLElement
PHP y PostgreSQL: guía completa para desarrolladores web