for
Istruzione (C)
L'istruzione for
consente di ripetere un'istruzione o un'istruzione composta un numero specificato di volte. Il corpo di un'istruzione for
viene eseguito zero o più volte fino a quando una condizione facoltativa non restituisce false. È possibile utilizzare espressioni facoltative nell'istruzione for
per inizializzare e modificare i valori durante l'esecuzione dell'istruzione for
.
Sintassi
iteration-statement
:
for
(
init-expression
opt opt loop-expression
;
)
;
cond-expression
statement
L'esecuzione di un'istruzione for
procede nel modo seguente:
Viene valutato
init-expression
, se presente. Specifica l'inizializzazione per il ciclo. Non esiste alcuna restrizione sul tipo diinit-expression
.Viene valutato
cond-expression
, se presente. Questa espressione deve essere di tipo aritmetico o puntatore. Viene valutata prima di ogni iterazione. Sono possibili tre risultati:Se
cond-expression
ètrue
(diverso da zero),statement
viene eseguito; vieneloop-expression
valutato , se disponibile.loop-expression
viene valutato al termine di ogni iterazione. Non esiste alcuna restrizione sul tipo. Gli effetti collaterali vengono eseguiti in ordine. Il processo inizia nuovamente con la valutazione dicond-expression
.Se
cond-expression
viene omesso,cond-expression
è considerato true e l'esecuzione prosegue esattamente come descritto nel paragrafo precedente. Un'istruzionefor
senza un argomentocond-expression
termina solo quando viene eseguita un'istruzionebreak
oreturn
nel corpo dell'istruzione o quando viene eseguita un'istruzionegoto
(a un'istruzione con etichetta all'esterno del corpo dell'istruzionefor
).Se
cond-expression
restituiscefalse
(0), l'esecuzione dell'istruzionefor
termina e il controllo passa all'istruzione successiva del programma.
L'istruzione for
può terminare anche quando viene eseguita un'istruzione break
, goto
o return
all'interno del corpo dell'istruzione. Un'istruzione continue
in un ciclo for
determina la valutazione di loop-expression
. Quando un'istruzione break
viene eseguita all'interno di un for
ciclo, loop-expression
non viene valutata o eseguita. Questa istruzione
for( ; ; )
è il modo consueto per produrre un ciclo infinito, che può essere chiuso solo con un'istruzione break
, goto
o return
.
Esempio
In questo esempio viene illustrata l'istruzione 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;
}
Output
Number of spaces: 4
Number of tabs: 2