Instrucción for
(C++)
Ejecuta una instrucción repetidamente hasta que la condición es false. Para obtener información sobre la instrucción for
basada en intervalos, consulte Instrucción for
(C++) basada en intervalos. Para obtener más información sobre la instrucción for each
de C++/CLI, consulte for each
, in
.
Sintaxis
for (
init-expression
;
cond-expression
;
loop-expression
)
statement
Comentarios
Use la instrucción for
para construir bucles que deben ejecutarse un número especificado de veces.
La instrucción for
consta de tres partes opcionales, como se muestra en la tabla siguiente.
Elementos del bucle for
Nombre de la sintaxis | Cuándo se ejecuta | Descripción |
---|---|---|
init-expression |
Antes que cualquier otro elemento de la instrucción for , init-expression solo se ejecuta una vez. El control pasa entonces a cond-expression . |
Se suele utilizar para inicializar índices de bucle. Puede contener expresiones o declaraciones. |
cond-expression |
Antes de la ejecución de 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 no ambigua a un tipo entero. Se utiliza normalmente para comprobar los criterios de finalización del bucle. |
loop-expression |
Al final de cada iteración de statement . Después de ejecutarse loop-expression , se evalúa cond-expression . |
Se utiliza normalmente para incrementar índices de bucle. |
En los ejemplos siguientes se muestran distintas formas de usar la instrucción for
.
#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 aumentar o reducir, 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 bucle for
finaliza cuando se ejecuta una instrucción break
, return o goto
(en una instrucción con etiqueta fuera del bucle for
) dentro de statement
. Una instrucción continue
en un bucle for
solo finaliza la iteración actual.
Si se omite cond-expression
, se considera como true
y el bucle for
no terminará sin break
, return
o goto
en statement
.
Aunque los tres campos de la instrucción for
se suelen usar para la inicialización, comprobar la finalización y el incremento, no se limitan 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++){
;
}
}
Bucles for
y el estándar de C++
El estándar de C++ indica que una variable declarada en un bucle for
saldrá del ámbito cuando finalice el bucle for
. 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 bucle for
permanece en el ámbito hasta que finaliza el ámbito de inclusión del bucle for
.
/Zc:forScope
habilita el comportamiento estándar de las variables declaradas en bucles for sin necesidad de especificar /Za
.
También es posible utilizar las diferencias de ámbito del bucle for
para volver a declarar variables en /Ze
de la manera siguiente:
// 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++ ) {}
}
Esto imita mejor el comportamiento estándar de una variable declarada en un bucle for
, que requiere que las variables declaradas en un bucle for
salgan del ámbito cuando finalice el bucle. Cuando una variable se declara en un bucle for
, el compilador la promueve internamente a una variable local en el ámbito de inclusión del bucle for
incluso aunque ya exista una variable local con el mismo nombre. Se promueve incluso si ya hay una variable local con el mismo nombre.
Consulte también
Instrucciones de iteración
Palabras clave
Instrucción while
(C++)
Instrucción do-while
(C++)
Instrucción for
(C++) basada en intervalos
Comentarios
https://aka.ms/ContentUserFeedback.
Próximamente: A lo largo de 2024 iremos eliminando gradualmente GitHub Issues como mecanismo de comentarios sobre el contenido y lo sustituiremos por un nuevo sistema de comentarios. Para más información, vea:Enviar y ver comentarios de