Teilen über


Verbundanweisung (C)

Eine Verbundanweisung (auch „Block“ genannt) wird in der Regel als Text einer anderen Anweisung, wie der if -Anweisung, angezeigt. Deklarationen und Typen beschreibt die Form und die Bedeutung der Deklarationen, die am Anfang einer Verbundanweisung angezeigt werden können.

Syntax

compound-statement:
{declaration-listoptstatement-listopt}

declaration-list:
declaration
declaration-list declaration

statement-list:
statement
statement-list statement

Wenn Deklarationen vorhanden sind, müssen sie vor allen Anweisungen stehen. Der Gültigkeitsbereich eines Bezeichners, der am Anfang einer Verbundanweisung deklariert ist, reicht vom Deklarationspunkt bis an das Ende des Blocks. Er ist im gesamten Block sichtbar, es sei denn, eine Deklaration desselben Bezeichners ist in einem inneren Block vorhanden.

Für Bezeichner in einer Verbundanweisung wird auto vorausgesetzt, es sei denn, sie sind explizit als register, static oder extern deklariert. Ausnahmen sind Funktionen, die nur extern sein können. Sie können den extern-Spezifizierer in Funktionsdeklarationen weglassen. Die Funktion ist dann immer noch extern.

Der Speicher wird nicht belegt, und eine Initialisierung ist nicht zulässig, wenn eine Variable oder Funktion in einer Verbundanweisung mit der Speicherklasse extern deklariert ist. Die Deklaration verweist auf eine externe Variable oder Funktion, die an einer anderen Stelle definiert ist.

Variablen, die in einem Block mit dem auto - oder register -Schlüsselwort deklariert werden, werden neu zugeordnet und bei Bedarf jedes Mal initialisiert, wenn die Verbundanweisung eingegeben wird. Diese Variablen sind nicht mehr definiert, nachdem die Verbundanweisung beendet wurde. Wenn eine Variable, die in einem Block deklariert wird, das Attribut static besitzt, wird die Variable zu Beginn der Programmausführung initialisiert und behält ihren Wert während des Programmablaufs. Weitere Informationen zu static erhalten Sie unter C-Speicherklassen.

In diesem Beispiel wird eine Verbundanweisung veranschaulicht:

if ( i > 0 )
{
    line[i] = x;
    x++;
    i--;
}

In diesem Beispiel werden alle Anweisungen innerhalb einer Verbundanweisung in der Reihenfolge ausgeführt, wenn i größer als 0 ist.

Siehe auch

Anweisungen