A block permits multiple statements to be written in contexts where a single statement is expected.
A block consists of an optional statement-list (§8.2.1), enclosed in braces. If the statement list is omitted, the block is said to be empty.
A block may contain declaration statements (§8.5). The scope of a local variable or constant declared in a block extends from the declaration to the end of the block.
Within a block, the meaning of a name used in an expression context must always be the same (§7.5.2.1).
A block is executed as follows:
The statement list of a block is reachable if the block itself is reachable.
The end point of a block is reachable if the block is empty or if the end point of the statement list is reachable.