Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

271
Visualizações
En lenguaje C, ¿hay alguna diferencia entre estos dos bucles for?

A menudo veo dos formas de escribir para bucles.

El primero:

 for (int i = 0; i < 10; i++) { ...... }

El segundo:

 int i; for (i = 0; i < 10; i++){ ...... }

¿Hay alguna diferencia entre los dos métodos en términos de eficiencia de ejecución?

over 4 years ago · Santiago Trujillo
3 Respostas
Responde à pergunta

0

Como otros ya han señalado, la diferencia es el alcance y, en muchos casos, no hay diferencia en la eficiencia del programa.

En aras de poder depurar su código y razonar sobre lo que está haciendo, generalmente es recomendable tener variables para el alcance más pequeño posible. Cuanto más tiempo existe una variable, más cosas no deseadas puede hacerle. Si i no es necesario después del bucle, colóquelo localmente en el bucle.

Considere simplemente imprimir una matriz de enteros:

 void print_array(int *arr, size_t n) { for (size_t i = 0; i < n; ++i) { printf("%d\n", arr[i]); } }

Pero digamos que queremos encontrar el índice de un valor en una matriz int (donde i es n que indica que no se encontró el valor):

 size_t find_index(int val, int *arr, size_t n) { size_t i; for (i = 0; i < n && arr[i] != val; ++i) { // Nothing required here. } return i; }

En el último caso, el valor de i se necesitaba después de que se completara el bucle, por lo que no se podía aplicar localmente al bucle.

over 4 years ago · Santiago Trujillo Relatório

0

En términos de eficiencia de ejecución, no. Estos compilarán a la misma cosa. Vea la salida del compilador aquí . En cuanto a funcionalidad, sí, de forma muy minoritaria. El alcance de i es diferente. Entonces, en el segundo ejemplo podrías hacer esto:

 int i; for (i = 0; i < 10; i++){ if (some_condition) { break; } ... } // use i for some other purpose, like indexing a vector or something.

Pero debido al alcance de i , no puede hacer esto en el primer bucle.

over 4 years ago · Santiago Trujillo Relatório

0

La diferencia es que, en el segundo fragmento de código, la variable i está disponible (para inspección y uso) después de que el ciclo for haya terminado de ejecutarse; en el primer fragmento, no lo es.

Si no usa/inspecciona esa variable i después del ciclo (es decir, después del cierre } ), entonces un compilador de optimización probablemente producirá el mismo código para ambos.

over 4 years ago · Santiago Trujillo Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda