Declarações variáveis após as instruções if
Um problema surgiu em outro fórum e eu sabia como corrigi-lo, mas revelou um recurso do compilador peculiar a mim. A pessoa estava recebendo o erro "A instrução incorporada não pode ser uma declaração ou uma declaração rotulada" porque tinha uma declaração de uma variável após uma instrução if sem colchetes. Essa não era a intenção deles, mas eles haviam comentado a linha de código imediatamente após a instrução if, que tornou a declaração da variável a linha de código de fato a ser executada. Enfim, esse é o pano de fundo, o que me leva a isso.
O código a seguir é ilegal
if (true)
int i = 7;
No entanto, se você colocar isso entre parênteses, é tudo legal.
if (true)
{
int i = 7;
}
Nenhum pedaço de código é útil. No entanto, o segundo está OK. Qual é a explicação específica para esse comportamento?