También se recomienda generalmente no utilizar "i" después de salir del ciclo en la mayoría de los estándares de codificación que he leído. En particular, NO lo haga:
for(i = 0; i < num_elements; i++)
{
if(element[i].id == id)
{
/* Do something to element here. */
break;
}
}
if(i == num_elements)
{
fprintf(stderr, "Failed to find element %d.", id);
succeeded == false;
}
Si bien esto funcionará, es una codificación deficiente. Es menos legible y mantenible que las alternativas. P.ej.
succeeded = false;
for(i = 0; i < num_elements; i++)
{
if(element[i].id == id)
{
/* Do something to element here. */
succeeded = true;
break;
}
}
if(false == succeeded)
{
fprintf(stderr, "Failed to find element %d.", id);
}
Err, ¿qué? Él preguntó "¿Es A el caso o es B?". Tal pregunta no puede contestarse satisfactoriamente simplemente "Sí" o "No". También declaró su variable fuera del bloque. No considero que esta respuesta sea relevante o necesaria (ya que no agrega información nueva que no esté ya contenida en respuestas anteriores). – AlastairG
Sí, tienes razón. Simplemente respondo 'sí' porque alguien ya me explicó por qué me preservaron (la respuesta de Visage fue la mejor). Pensé que agregar este ejemplo podría ser útil para completar otras respuestas. =) – BlackBear