Considere este programa simples:
fails.c
:
#include <stdio.h>
int main(){
int i = 10;
if (i == 10)
int j = 11;
return 0;
}
Falha ao compilar ( gcc fails.c
), apresentando este erro:
fails.c: In function ‘main’:
fails.c:7:3: error: expected expression before ‘int’
int j = 11;
^
Mas este vai bem:
#include <stdio.h>
int main(){
int i = 10;
if (i == 10){
int j = 11;
}
return 0;
}
Eu descobri que a solução é colocá-los {}
. Mas eu gostaria de saber por que isso é necessário.
Por que se comporta dessa maneira, quando algo como printf
é aceitável?
#include <stdio.h>
int main(){
int i = 10;
if (i == 10)
printf("some text\n");
return 0;
}
Isso ocorre porque if
deve ser seguido por uma declaração:
declaração if (expressão)
No entanto, uma declaração não é uma declaração:
declaração:
declaração rotulada
declaração composta
expressão-declaração
declaração de seleção
declaração de iteração
declaração de salto
Quando colocado dentro de um {}
, é uma instrução composta, portanto, ok.
Este artigo é coletado da Internet.
Se houver alguma infração, entre em [email protected] Delete.
deixe-me dizer algumas palavras