Istruzione composta (C)
Un'istruzione composta (detta anche "blocco") viene in genere visualizzata come corpo di un'altra istruzione, ad esempio l'istruzione if
. In Dichiarazioni e tipi viene descritto il modulo e il significato delle dichiarazioni che possono essere visualizzate nell'intestazione di un'istruzione composta.
Sintassi
compound-statement
:
{
declaration-list
opt opt opt statement-list
}
declaration-list
:
declaration
declaration-list
declaration
statement-list
:
statement
statement-list
statement
Se esistono dichiarazioni, devono precedere qualsiasi istruzione. L'ambito di ogni identificatore dichiarato all'inizio di un'istruzione composta si estende dal punto di dichiarazione fino alla fine del blocco. È visibile in tutto il blocco, a meno che non esista una dichiarazione dello stesso identificatore in un blocco interno.
Gli identificatori in un'istruzione composta vengono presunti a meno che non siano dichiarati in modo esplicito auto
con register
, static
o extern
, ad eccezione delle funzioni, che possono essere extern
solo . È possibile ignorare l'identificatore extern
nelle dichiarazioni di funzione e la funzione sarà sempre extern
.
L'archiviazione non è allocata e l'inizializzazione non è consentita se una variabile o una funzione viene dichiarata in un'istruzione composta con la classe extern
di archiviazione . La dichiarazione fa riferimento a una variabile esterna o a una funzione definita altrove.
Le variabili dichiarate in un blocco con la auto
parola chiave o register
vengono riallocate e, se necessario, inizializzate ogni volta che viene immessa l'istruzione composta. Queste variabili non vengono più definite dopo la chiusura dell'istruzione composta. Se una variabile dichiarata all'interno di un blocco ha l'attributo static
, la variabile viene inizializzata all'avvio dell'esecuzione del programma e ne mantiene il valore in tutto il programma. Per informazioni su , vedere Classi di archiviazione.static
In questo esempio viene illustrata un'istruzione composta:
if ( i > 0 )
{
line[i] = x;
x++;
i--;
}
In questo esempio, se i
è maggiore di 0, tutte le istruzioni nell'istruzione composta vengono eseguite in ordine.