Por que em C++ não é possível declarar variáveis dentro de um bloco switch sem chaves?
Olá a todos! Comecei a estudar C++ e me deparei com um erro muito estranho ao usar switch. Eu precisava escrever uma calculadora simples que executa diferentes operações dependendo do caractere inserido. Aqui está meu 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; // Erro!
cout << result;
break;
case '-':
// ...
break;
}
return 0;
}
```
O compilador exibe um erro: "cannot jump from switch statement to this case label" ou algo como "initialization of 'result' is skipped by 'case' label". Eu entendo que switch funciona como goto e salta para o rótulo correto, mas por que não é possível declarar uma variável diretamente dentro de case? Afinal, estou escrevendo ela após os dois pontos, antes do próximo break. Qual é o problema e como declarar corretamente?