A compound statement, or block, allows a sequence of statements to be treated as a single statement. A compound statement begins with a left brace, contains optional declarations followed optionally by statements, and ends with a right brace, as shown in the following example:
{ int x = 5; z = 1; if (y < x) funct(y, z); else funct(x, z); }
Block declarations are local to the block, and, for the rest of the block, they supersede other declarations of the same name in outer scopes.
A block is entered normally when control flows into it,
or when a goto
statement transfers control to a
label at the beginning of the block itself. Each time the block
is entered normally, storage is allocated for auto
or register
variables. If, on the other hand,
a goto
statement transfers control to a label
inside the block or if the block is the body of a
switch
statement, these storage allocations do
not occur. For more information about storage classes, see Section 2.10.
Function definitions contain compound statements. The compound statement following the parameter declarations in a function definition is called the function body.