Nota:
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
Ejecuta una instrucción repetidamente hasta que la condición se convierte en false. Para obtener información sobre la instrucción basada en intervalos, vea Instrucción basada en forfor intervalos (C++). Para obtener información sobre la instrucción de C++/CLI for each , vea for each, in.
Sintaxis
for (init-expression;cond-expression;loop-expression)
statement
Observaciones
Use la for instrucción para construir bucles que deben ejecutar un número especificado de veces.
La for instrucción consta de tres partes opcionales, como se muestra en la tabla siguiente.
elementos de bucle for
| Nombre de sintaxis | Cuando se ejecuta | Descripción |
|---|---|---|
init-expression |
Antes de cualquier otro elemento de la for instrucción , init-expression solo se ejecuta una vez. A continuación, el control pasa a cond-expression. |
A menudo se usa para inicializar índices de bucle. Puede contener expresiones o declaraciones. |
cond-expression |
Antes de ejecutar cada iteración de statement, incluida la primera iteración.
statement solo se ejecuta si cond-expression se evalúa como true (distinto de cero). |
Expresión que se evalúa como un tipo entero o un tipo de clase que tiene una conversión inequívoca a un tipo entero. Normalmente se usa para probar los criterios de terminación de bucle. |
loop-expression |
Al final de cada iteración de statement. Después loop-expression de ejecutarse, cond-expression se evalúa. |
Normalmente se usa para incrementar índices de bucle. |
En los ejemplos siguientes se muestran distintas formas de usar la for instrucción .
#include <iostream>
using namespace std;
int main() {
// The counter variable can be declared in the init-expression.
for (int i = 0; i < 2; i++ ){
cout << i;
}
// Output: 01
// The counter variable can be declared outside the for loop.
int i;
for (i = 0; i < 2; i++){
cout << i;
}
// Output: 01
// These for loops are the equivalent of a while loop.
i = 0;
while (i < 2){
cout << i++;
}
// Output: 01
}
init-expression y loop-expression pueden contener varias instrucciones separadas por comas. Por ejemplo:
#include <iostream>
using namespace std;
int main(){
int i, j;
for ( i = 5, j = 10 ; i + j < 20; i++, j++ ) {
cout << "i + j = " << (i + j) << '\n';
}
}
/* Output:
i + j = 15
i + j = 17
i + j = 19
*/
loop-expression se puede incrementar o disminuir, o modificar de otras maneras.
#include <iostream>
using namespace std;
int main(){
for (int i = 10; i > 0; i--) {
cout << i << ' ';
}
// Output: 10 9 8 7 6 5 4 3 2 1
for (int i = 10; i < 20; i = i+2) {
cout << i << ' ';
}
}
// Output: 10 12 14 16 18
Un for bucle finaliza cuando se ejecuta , breakdevuelve o goto (en una instrucción etiquetada fuera del for bucle).statement Una continue instrucción de un for bucle finaliza solo la iteración actual.
Si cond-expression se omite, se considera true, y el for bucle no finalizará sin break, returno goto dentro de statement.
Aunque los tres campos de la for instrucción se usan normalmente para la inicialización, las pruebas para la finalización y el incremento, no están restringidos a estos usos. Por ejemplo, el código siguiente imprime los números de 0 a 4. En este caso, statement es la instrucción null:
#include <iostream>
using namespace std;
int main()
{
int i;
for( i = 0; i < 5; cout << i << '\n', i++){
;
}
}
for bucles y el estándar de C++
El estándar de C++ indica que una variable declarada en un for bucle quedará fuera del ámbito después de que finalice el for bucle. Por ejemplo:
for (int i = 0 ; i < 5 ; i++) {
// do something
}
// i is now out of scope under /Za or /Zc:forScope
De forma predeterminada, en /Ze, una variable declarada en un for bucle permanece en el ámbito hasta que finaliza el for ámbito envolvente del bucle.
/Zc:forScope habilita el comportamiento estándar de las variables declaradas en bucles for sin necesidad de especificar /Za.
También es posible usar las diferencias de ámbito del for bucle para volver a declarar variables de /Ze la siguiente manera:
// for_statement5.cpp
int main(){
int i = 0; // hidden by var with same name declared in for loop
for ( int i = 0 ; i < 3; i++ ) {}
for ( int i = 0 ; i < 3; i++ ) {}
}
Este comportamiento imita más estrechamente el comportamiento estándar de una variable declarada en un for bucle, que requiere que las variables declaradas en un for bucle salgan del ámbito después de que se realice el bucle. Cuando una variable se declara en un for bucle, el compilador lo promueve internamente a una variable local en el for ámbito envolvente del bucle. Se promueve incluso si ya hay una variable local con el mismo nombre.
Consulte también
Instrucciones de iteración
Palabras clave
while instrucción (C++)
do-while instrucción (C++)
Instrucción basada en for intervalos (C++)