Istruzione for (C)for Statement (C)

L'istruzione for consente di ripetere un'istruzione o un'istruzione composta un numero specificato di volte.The for statement lets you repeat a statement or compound statement a specified number of times. Il corpo di un'istruzione for viene eseguito zero o più volte fino a quando una condizione facoltativa non restituisce false.The body of a for statement is executed zero or more times until an optional condition becomes false. È possibile usare espressioni facoltative nell'istruzione for per inizializzare e modificare i valori durante l'esecuzione dell'istruzione for.You can use optional expressions within the for statement to initialize and change values during the for statement's execution.

SintassiSyntax

iteration-statement:iteration-statement:
  for ( init-expressionopt ; cond-expressionopt ; loop-expressionopt ) statement  for ( init-expressionopt ; cond-expressionopt ; loop-expressionopt ) statement

L'esecuzione di un'istruzione for procede nel modo seguente:Execution of a for statement proceeds as follows:

  1. Se presente, viene valutato init-expression.The init-expression, if any, is evaluated. Questo consente l'inizializzazione del ciclo.This specifies the initialization for the loop. Non esistono restrizioni per il tipo di init-expression.There is no restriction on the type of init-expression.

  2. Se presente, viene valutato cond-expression.The cond-expression, if any, is evaluated. Questa espressione deve essere di tipo aritmetico o puntatore.This expression must have arithmetic or pointer type. Viene valutata prima di ogni iterazione.It is evaluated before each iteration. Sono possibili tre risultati:Three results are possible:

    • Se cond-expression è true (diverso da zero), viene eseguito statement; quindi viene valutato loop-expression, se presente.If cond-expression is true (nonzero), statement is executed; then loop-expression, if any, is evaluated. loop-expression viene valutata al termine di ogni iterazione.The loop-expression is evaluated after each iteration. Non esistono restrizioni per il relativo tipo.There is no restriction on its type. Gli effetti collaterali vengono eseguiti in ordine.Side effects will execute in order. Il processo inizia nuovamente con la valutazione di cond-expression.The process then begins again with the evaluation of cond-expression.

    • Se cond-expression è omesso, cond-expression è considerato true e l'esecuzione prosegue esattamente come descritto nel paragrafo precedente.If cond-expression is omitted, cond-expression is considered true, and execution proceeds exactly as described in the previous paragraph. Un'istruzione for senza un argomento cond-expression termina solo quando viene eseguita un'istruzione break o return nel corpo dell'istruzione o quando viene eseguita un'istruzione goto (a un'istruzione con etichetta all'esterno del corpo dell'istruzione for).A for statement without a cond-expression argument terminates only when a break or return statement within the statement body is executed, or when a goto (to a labeled statement outside the for statement body) is executed.

    • Se cond-expression è false (0), l'esecuzione dell'istruzione for termina e il controllo passa all'istruzione successiva nel programma.If cond-expression is false (0), execution of the for statement terminates and control passes to the next statement in the program.

    L'istruzione for può terminare anche quando un'istruzione break, goto o return viene eseguita nel corpo dell'istruzione.A for statement also terminates when a break, goto, or return statement within the statement body is executed. Un'istruzione continue in un ciclo for causa la valutazione di loop-expression.A continue statement in a for loop causes loop-expression to be evaluated. Quando un'istruzione break viene eseguita all'interno di un ciclo for, loop-expression non viene valutato né eseguito.When a break statement is executed inside a for loop, loop-expression is not evaluated or executed. Questa istruzioneThis statement

for( ;; )  

è la modalità consueta di produrre un ciclo infinito che può essere terminato solo con un'istruzione break, goto o return.is the customary way to produce an infinite loop which can only be exited with a break, goto, or return statement.

CodiceCode

Questo esempio illustra l'istruzione for:This example illustrates the for statement:

// 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;  
}  

OutputOutput

Number of spaces: 4  
Number of tabs: 2  

Vedere ancheSee Also

IstruzioniStatements