Condividi tramite


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-listopt 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, statico extern, ad eccezione delle funzioni, che possono essere externsolo . È 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 externdi 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.

Vedi anche

Rendiconti