loop for based c loops for-loop syntax

range based for loop c++



Sintaxis de Double For Loop en C (3)

Supongo que son dos para bucles en uno, ya que hay dos incrementos.

Bueno en realidad no. El segundo bucle for también sigue la sintaxis prescrita, es un poco extravagante manejar las variables relacionadas con el bucle.

Para una declaración de bucle como

for(j = i,k = 0; k < n2; j++,k++){

puede ser interpretado como

for( (j = i,k = 0) ; (k < n2) ; (j++,k++) ){ ^^^^^^^^^^^ ^^^^^^ ^^^^^^^ init condition post loop body operation.

Ahora, los bloques de expresión de inicialización y post-cuerpo hacen uso del operador de coma .

Relacionado, citando C11 , capítulo §6.5.17

El operando izquierdo de un operador de coma se evalúa como una expresión vacía; hay un punto de secuencia entre su evaluación y la del operando correcto. Entonces se evalúa el operando correcto; el resultado tiene su tipo y valor.

Para elaborar, la misma sintaxis se puede descomponer en

j = i; //initialization, only once for( k = 0 ; k < n2 ; k++ ){ // good ol'' syntax //......loop body j++; //last expression in the body. } //end of loop

Soy nuevo en C y tengo que escribir un código que emule una función determinada. Sin embargo, estoy teniendo dificultades para entender lo que está haciendo el segundo ciclo for de este código, explícitamente. La sintaxis no parece seguir el estándar para la sintaxis de bucle de:

for ( init; condition; increment ) { statement(s); }

Aquí está el código que estoy examinando y es el segundo ciclo for que no estoy siguiendo y no veo ninguna versión en línea de este

for (i = 0; i <= (n1-n2); i++){ count=0; for(j = i,k = 0; k < n2; j++,k++){ if (*(s1+j)!=*(s2+k)){ break; } else count++; if(count==n2) total++; } }

Supongo que son dos para bucles en uno, ya que hay dos incrementos. Y creo que la desigualdad es similar a un ''ciclo while'', pero no estoy seguro. La parte confusa es que no parece haber una condición para el bucle j. No estoy seguro si es un atajo de sintaxis o si hay un bucle especial no puedo encontrar un recurso para en línea.


Puede hacer una inicialización múltiple e incrementar en un solo ciclo for exactamente como en su ejemplo (separado con una coma).

for(first = 0, second = 0 ; your_condition ; ++first, ++second) ...

Esto es útil cuando necesita que se actualicen múltiples variables cada vez en su bucle for .

¡Espero que esto ayude!


for(j = i,k = 0; k < n2; j++,k++){ initialisation condition increment or decrement

  1. aquí están considerando dos variables para realizar un seguimiento.
  2. No son dos bucles for en un solo for loop
  3. la razón por la que se hace así es inicializando y actualizando variables en cada iteración.
  4. Aunque puede tener problemas si está utilizando variables de tipo múltiple dentro for loop para la inicialización