for
Instrukcja (C)
Instrukcja for
umożliwia powtórzenie instrukcji lub instrukcji złożonej określoną liczbę razy. Treść instrukcji for
jest wykonywana zero lub więcej razy, dopóki opcjonalny warunek nie stanie się fałszywy. Możesz użyć wyrażeń opcjonalnych w instrukcji for
, aby zainicjować i zmienić wartości podczas for
wykonywania instrukcji.
Składnia
iteration-statement
:
for
(
init-expression
opt opt ;
cond-expression
;
loop-expression
)
statement
Wykonanie instrukcji for
jest kontynuowane w następujący sposób:
Wartość
init-expression
, jeśli istnieje, jest obliczana. Określa inicjowanie pętli. Nie ma żadnych ograniczeń dotyczących typuinit-expression
.Wartość
cond-expression
, jeśli istnieje, jest obliczana. To wyrażenie musi mieć typ arytmetyczny lub wskaźnik. Jest obliczana przed każdą iterację. Możliwe są trzy wyniki:Jeśli
cond-expression
parametr jesttrue
(niezerowy),statement
jest wykonywany, a następnieloop-expression
, jeśli istnieje, jest obliczany. Wartość jest obliczanaloop-expression
po każdej iteracji. Nie ma żadnych ograniczeń dotyczących jego typu. Efekty uboczne będą wykonywane w kolejności. Następnie proces rozpoczyna się ponownie od oceny elementucond-expression
.Jeśli
cond-expression
zostanie pominięty,cond-expression
jest uznawany za true, a wykonanie przebiega dokładnie tak, jak opisano w poprzednim akapicie. Instrukcjafor
bez argumentucond-expression
kończy się tylko wtedy, gdybreak
jest wykonywana instrukcja lubreturn
w treści instrukcji lub gdygoto
jest wykonywana instrukcja (do instrukcji oznaczonej etykietą poza treściąfor
instrukcji).Jeśli
cond-expression
wartość tofalse
(0), wykonanie instrukcjifor
kończy działanie i kontrola przechodzi do następnej instrukcji w programie.
Instrukcja for
kończy się również po break
wykonaniu instrukcji , goto
lub return
w treści instrukcji. Instrukcja continue
w for
pętli powoduje loop-expression
ocenę. break
Gdy instrukcja jest wykonywana wewnątrz for
pętli, loop-expression
nie jest obliczana ani wykonywana. Ta instrukcja
for( ; ; )
jest niestandardowym sposobem tworzenia nieskończonej pętli, którą można zamknąć tylko za pomocą break
instrukcji , goto
lub return
.
Przykład
W tym przykładzie przedstawiono instrukcję for
:
// c_for.c
int main()
{
char* line = "H e \tl\tlo World\0";
int space = 0;
int tab = 0;
int i;
int max = strlen(line);
for (i = 0; i < max; i++ )
{
if ( line[i] == ' ' )
{
space++;
}
if ( line[i] == '\t' )
{
tab++;
}
}
printf("Number of spaces: %i\n", space);
printf("Number of tabs: %i\n", tab);
return 0;
}
Wynik
Number of spaces: 4
Number of tabs: 2