Instrukcja złożona (C)
Instrukcja złożony (nazywana również "blokiem") zwykle jest wyświetlana jako treść innej instrukcji, takiej jak if
instrukcja . Deklaracje i typy opisują formę i znaczenie deklaracji, które mogą pojawiać się na czele instrukcji złożonej.
Składnia
compound-statement
:
{
declaration-list
opt opt opt statement-list
}
declaration-list
:
declaration
declaration-list
declaration
statement-list
:
statement
statement-list
statement
Jeśli istnieją deklaracje, muszą one pojawić się przed wszelkimi oświadczeniami. Zakres każdego identyfikatora zadeklarowanego na początku instrukcji złożonej rozciąga się od punktu deklaracji do końca bloku. Jest on widoczny w całym bloku, chyba że w bloku wewnętrznym istnieje deklaracja tego samego identyfikatora.
Identyfikatory w instrukcji złożonej są zakładane auto
, chyba że jawnie zadeklarowane inaczej z register
, static
lub extern
, z wyjątkiem funkcji, które mogą być extern
tylko . Specyfikator można pozostawić extern
w deklaracjach funkcji, a funkcja będzie nadal .extern
Magazyn nie jest przydzielany i inicjowanie nie jest dozwolone, jeśli zmienna lub funkcja jest zadeklarowana w instrukcji złożonej z klasą extern
magazynu . Deklaracja odwołuje się do zmiennej zewnętrznej lub funkcji zdefiniowanej gdzie indziej.
Zmienne zadeklarowane w bloku ze auto
słowem kluczowym lub register
są ponownie przydzielane i w razie potrzeby inicjowane za każdym razem, gdy zostanie wprowadzona instrukcja złożone. Te zmienne nie są już zdefiniowane po zakończeniu instrukcji złożonej. Jeśli zmienna zadeklarowana wewnątrz bloku ma static
atrybut, zmienna jest inicjowana po rozpoczęciu wykonywania programu i zachowuje jego wartość w całym programie. Zobacz Klasy magazynu, aby uzyskać informacje o static
.
W tym przykładzie przedstawiono instrukcję złożoną:
if ( i > 0 )
{
line[i] = x;
x++;
i--;
}
W tym przykładzie, jeśli i
wartość jest większa niż 0, wszystkie instrukcje wewnątrz instrukcji złożonej są wykonywane w kolejności.