Instrução composta (C)
Uma instrução composta (também chamada de “bloco”) aparece geralmente como o corpo de outra instrução, como a instrução if
. Declarações e tipos descreve o formato e o significado das declarações que podem aparecer no cabeçalho de uma instrução composta.
Sintaxe
compound-statement
:
{
declaration-list
opt statement-list
opt }
declaration-list
:
declaration
declaration-list
declaration
statement-list
:
statement
statement-list
statement
Se houver declarações, elas deverão vir antes de todas as instruções. O escopo de cada identificador declarado no início de uma instrução composta estende-se de seu ponto de declaração ao fim do bloco. Ele fica visível em todo o bloco, a menos que exista uma declaração do mesmo identificador em um bloco interno.
Os identificadores em uma instrução composta são presumidos como auto
, a menos que declarados explicitamente de outra maneira com register
, static
ou extern
, exceto por funções, que só podem ser extern
. Você pode deixar de fora o especificador extern
em declarações de função, e a função ainda será extern
.
O armazenamento não é alocado e a inicialização não é permitida se uma variável ou função é declarada em uma instrução composta com a classe de armazenamento extern
. A declaração se refere a uma variável ou função externa definida em outro lugar.
Variáveis declaradas em um bloco com a palavra-chave auto
ou register
são realocadas e, se necessário, inicializadas sempre que a instrução composta é inserida. Essas variáveis não são mais definidas após a saída da instrução composta. Se uma variável declarada em um bloco tiver o atributo static
, a variável será inicializada quando a execução do programa iniciar e manterá seu valor durante o programa. Consulte Classes de armazenamento para obter informações sobre static
.
Este exemplo ilustra uma instrução composta:
if ( i > 0 )
{
line[i] = x;
x++;
i--;
}
Neste exemplo, se i
for maior que 0, todas as instruções na instrução composta serão executadas na ordem.