Instrucción for
(C)
La instrucción for
permite repetir una instrucción o una instrucción compuesta un número especificado de veces. El cuerpo de una instrucción for
se ejecuta cero o más veces hasta que una condición opcional sea false. Puede utilizar expresiones opcionales dentro de la instrucción for
para inicializar y cambiar valores durante la ejecución de la instrucción for
.
Sintaxis
iteration-statement
:
for
(
init-expression
opt ;
cond-expression
opt ;
loop-expression
opt )
statement
La ejecución de una instrucción for
continúa como sigue:
init-expression
, si existe, se evalúa. Especifica la inicialización del bucle. No hay ninguna restricción sobre el tipo deinit-expression
.cond-expression
, si existe, se evalúa. Esta expresión debe tener un tipo aritmético o de puntero. Se evalúa antes de cada iteración. Se pueden producir tres resultados:Si
cond-expression
estrue
(distinta de cero), se ejecutastatement
; a continuación, se evalúaloop-expression
, si existe.loop-expression
se evalúa después de cada iteración. No hay restricciones sobre su tipo. Los efectos secundarios se ejecutarán en orden. Entonces, comienza de nuevo el proceso con la evaluación decond-expression
.Si se omite
cond-expression
,cond-expression
se considera true, y la ejecución continúa exactamente como se ha descrito en el párrafo anterior. Una instrucciónfor
sin un argumentocond-expression
solo finaliza cuando se ejecuta una instrucciónbreak
oreturn
dentro del cuerpo de la instrucción o cuando se ejecutagoto
(para una instrucción con etiqueta fuera del cuerpo de la instrucciónfor
).Si
cond-expression
esfalse
(0), la ejecución de la instrucciónfor
termina y se pasa el control a la siguiente instrucción del programa.
Una instrucción for
también finaliza cuando se ejecuta una instrucción break
, goto
o return
dentro del cuerpo de la instrucción. Una instrucción continue
en un bucle for
hace que se evalúe loop-expression
. Cuando se ejecuta una instrucción break
dentro de un bucle for
, loop-expression
no se evalúa ni se ejecuta. Esta instrucción
for( ; ; )
es la forma habitual de generar un bucle infinito del que solo se puede salir con una instrucción break
, goto
o return
.
Ejemplo
En este ejemplo se ilustra la instrucción 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;
}
Salida
Number of spaces: 4
Number of tabs: 2