Autor Tema: Duda sobre "break" dentro de un bucle for.  (Leído 2292 veces)

0 Usuarios y 1 Visitante están viendo este tema.

Desconectado remi04

  • PIC24F
  • *****
  • Mensajes: 657
Duda sobre "break" dentro de un bucle for.
« en: 23 de Mayo de 2017, 17:39:18 »
En un cicle For, por ejemplo en el codigo de ejemplo, la variable I se incrementa de cero a 5 ejecutando las instrucciones 5 veces, luego sale del bucle pero he visto que I se incrementa en una unidad mas. es decir, al terminar el bucle, I se queda con valor = 6.

   Si la salida del bucle se fuerza con un break, " al recibirse el caracter ',' en el caso del ejemplo, la variable I en este caso no vale 6, sino 5.

   La pregunta es si es correcta mi observación y si hay alguna forma de hacer que en ambos casos I no se incremente una de mas al terminar el bucle.




Código: [Seleccionar]
for (i=0;i<=5;i++)
        {   
            pack5[i] = getchar();
            if (pack5[i] == ',')             
               break;
        }
       

Desconectado Picuino

  • Moderadores
  • DsPIC33
  • *****
  • Mensajes: 5892
    • Picuino
Re:Duda sobre "break" dentro de un bucle for.
« Respuesta #1 en: 23 de Mayo de 2017, 17:45:26 »
Te traduzco

Código: C
  1. for (i=0;i<=5;i++)  {    
  2.    pack5[i] = getchar();
  3.    if (pack5[i] == ',')            
  4.    break;
  5. }


Es igual a:

Código: C
  1. i=0;
  2. while(i<=5)  {    
  3.    pack5[i] = getchar();
  4.    if (pack5[i] == ',')            
  5.    break;
  6.    i++;
  7. }

Saludos.

Desconectado remi04

  • PIC24F
  • *****
  • Mensajes: 657
Re:Duda sobre "break" dentro de un bucle for.
« Respuesta #2 en: 24 de Mayo de 2017, 03:32:33 »
Muchas gracias picuino. 

Desconectado Archangels

  • PIC10
  • *
  • Mensajes: 27
Re:Duda sobre "break" dentro de un bucle for.
« Respuesta #3 en: 08 de Junio de 2017, 12:11:35 »
En un cicle For, por ejemplo en el codigo de ejemplo, la variable I se incrementa de cero a 5 ejecutando las instrucciones 5 veces, luego sale del bucle pero he visto que I se incrementa en una unidad mas. es decir, al terminar el bucle, I se queda con valor = 6.

   Si la salida del bucle se fuerza con un break, " al recibirse el caracter ',' en el caso del ejemplo, la variable I en este caso no vale 6, sino 5.

   La pregunta es si es correcta mi observación y si hay alguna forma de hacer que en ambos casos I no se incremente una de mas al terminar el bucle.




Código: [Seleccionar]
for (i=0;i<=5;i++)
        {   
            pack5[i] = getchar();
            if (pack5[i] == ',')             
               break;
        }
       

Si quieres que no llegue hasta 6 tienes qué cambiar el <= por < de esta forma ya no te hace el paso por el 5 tambien. O tambien puedes poner un 4 en lugar de 5.


 

anything