¿Cuál sería la diferencia de declarar i al comienzo del programa?

int a, b, c, i;

Vs en el ciclo for

for (int i=0;i<=n;i++)?

Desarrollé el hábito de declararlo en el bucle for y no sé si eso está bien (soy mejor en JS y encontré muchos problemas en mis programas debido a esto, pero en C ++ no lo hice).

Muchas gracias.

c++
-1
f0rta 26 feb. 2018 a las 21:51

4 respuestas

La mejor respuesta

Depende.

La mayoría de las veces está bien usar

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

Sin embargo, a veces desea saber el valor de i cuando finaliza el ciclo. En ese caso, necesitaría declarar la variable antes del ciclo for.

int i = 0;
for ( ; i <= n && (some other tests); i++ ) { ... }

// Do different things based on the value of i.
if ( i == n+1 )
{
   dothis();
}
else
{
   dothat();
}
2
R Sahu 26 feb. 2018 a las 18:56

Este es un problema de alcance. Si define int a antes del ciclo, puede usarlo dentro y fuera del ciclo. Cuando lo define dentro del bucle, solo puede usarlo dentro del bucle.

Aquí hay un buen artículo sobre Scope en el MSDN

Ps .: su ciclo no funciona, a menos que defina e inicialice la variable n

1
user7177818user7177818 26 feb. 2018 a las 18:54

Depende. Si no necesita i después del ciclo (el alcance solo será el ciclo for), entonces declare en el ciclo for. Si lo necesita después del bucle (el alcance es el bloque de código en el que está), debe declararlo fuera y antes del bucle.

1
NathanOliver 26 feb. 2018 a las 18:55

Cuando int i se declara fuera del bucle for, se puede acceder fuera del bucle for y dentro, pero cuando se define dentro del bucle, solo se puede usar dentro del bucle. Usualmente, si lo necesita para el ciclo for, defínalo dentro del ciclo.

0
Angad Pal Singh 26 feb. 2018 a las 18:57