¿Es este tipo de cosas:¿A qué se refiere exactamente el término "bucle vacío" en C y C++?
for(;;)
{
statements;
}
O acaso es:
for(initialisation;condition;updation)
{
}
Busco respuestas con referencias a una variedad de fuentes.
¿Es este tipo de cosas:¿A qué se refiere exactamente el término "bucle vacío" en C y C++?
for(;;)
{
statements;
}
O acaso es:
for(initialisation;condition;updation)
{
}
Busco respuestas con referencias a una variedad de fuentes.
Su primer caso (para con expresiones vacías) es un infinita bucle y la segunda (con cuerpo vacío de la para declaración) es un bucle
Para el registro, el cuerpo de un loop vacío también se puede omitir explícitamente: 'for (initialization; condition; updation) ; ' –
@ Péter Sí, y esa declaración vacía se llama 'declaración nula'. Se aplica a las declaraciones 'while' también. –
y las dos no son mucoivas: 'for (;;);' es un bucle infinito vacío! – ybungalobill
vacío En mi entorno se es como este:
for(;;) { statements; }
bucle sin fin
for(initialisation;condition;updation) { }
bucle vacío
Es igual a lo siguiente:
while (true) {
statements;
}
infinito por bucle es un bucle que funciona hasta que otra cosa lo detiene.
Eso es un bucle * infinito, no uno vacío ... –
@Martin, he comentado la respuesta en sí, no su comentario, disculpe la confusión :-) –
Gracias, respuesta editada. –
La respuesta depende del contexto.
Si se refiere a un bucle vacío para, entonces
for(;;)
{
statements;
}
es tal cosa.
Aunque, la misma cosa se puede lograr con un bucle while:
while(true)
{
statements;
}
y esto no es un bucle de "vacío". Ambos son bucles infinitos de los que debe salir utilizando break
dentro de su bucle.
Por otro lado,
for(initialisation;condition;updation)
{
}
esto es un bucle "vacío" que Bascially no hace nada, excepto tal vez actualizar algunas variables que podrían definirse antes del bucle en sí.
El último by-loop podría hacer muchísimas cosas, ya que la actualización puede tener todo tipo de efectos secundarios; si lo desea, podría rellenar la mayor parte de su aplicación. Ciertamente desaconsejo desde el punto de vista de la mantenibilidad, pero suponiendo que el último "básicamente no hace nada" cuando encuentras un bucle en un código desconocido ciertamente no es sabio. – Inca
Creo que necesita editar, afirma que el primer bucle 'for' está vacío y no está vacío. – unwind
Un bucle vacío es un bucle que tiene un cuerpo vacío, p.
for(int i = 0; i < 10; ++i) {}
while(cin) {}
(tenga en cuenta que el segundo ejemplo que aquí también pasa a ser interminable)
Hay casos en que éstos son útiles, por ejemplo, cuando una función tiene un efecto secundario deseado y devuelve su éxito, y debe repite hasta infructuosos, por ejemplo, para leer la última línea de un archivo:
std::string getLastLine(std::string filename)
{
std::ifstream in(filename.c_str());
if(!in)
return "";
std::string line;
while(std::getline(in, line)); // empty loop, the operation returns the condition
return line;
}
Lea también: [? es un (vacío) infinita comportamiento indefinido bucle en C] (http: // stackoverflow.com/questions/15595493/is-an-empty-infinite-loop-undefined-behavior-in-c) – Deduplicator