Instrucción compuesta (C)
Una instrucción compuesta (también denominada "bloque") normalmente aparece como el cuerpo de otra instrucción, como la instrucción if
. Declaraciones y tipos describe el formato y significado de las declaraciones que pueden aparecer en el encabezado de una instrucción compuesta.
Sintaxis
compound-statement
:
{
declaration-list
opt statement-list
opt }
declaration-list
:
declaration
declaration-list
declaration
statement-list
:
statement
statement-list
statement
Si hay declaraciones, preceden a cualquier instrucción. El ámbito de cada identificador declarado al principio de una instrucción compuesta se extiende desde su punto de declaración hasta el final del bloque. Está visible en todo el bloque, a menos que haya una declaración del mismo identificador en un bloque interno.
Los identificadores de una instrucción compuesta se supone que son auto
, a menos que se declaren explícitamente de otra manera con register
, static
o extern
, excepto las funciones, que solo pueden ser extern
. Aunque se omita el especificador extern
en las declaraciones de función, la función seguirá siendo extern
.
El almacenamiento no se asigna y la inicialización no se permite si una variable o función se declara en una instrucción compuesta con la clase de almacenamiento extern
. La declaración hace referencia a una variable externa o función definida en otra parte.
Las variables declaradas en un bloque con la palabra clave auto
o register
se reasignan y, si es necesario, se inicializan cada vez que se especifica la instrucción compuesta. Estas variables ya no se definen una vez fuera de la instrucción compuesta. Si una variable declarada dentro de un bloque tiene el atributo static
, la variable se inicializa cuando comienza la ejecución del programa y conserva su valor en todo el programa. Vea Clases de almacenamiento para obtener información sobre static
.
Este ejemplo muestra una instrucción compuesta:
if ( i > 0 )
{
line[i] = x;
x++;
i--;
}
En este ejemplo, si i
es mayor que 0, todas las instrucciones dentro de la instrucción compuesta se ejecutan por orden.