Stratos: Punto de Encuentro de Desarrolladores

¡Bienvenido a Stratos!

Acceder

Foros





¿Es correcto esto?

Iniciado por J_F_NASH, 19 de Abril de 2007, 01:36:18 PM

« anterior - próximo »

J_F_NASH

¿Qué es lo correcto y por qué? porque parece que no influye para nada.

//METODO 1
for(int x = 0; x<10; x++)



//METODO 2
int x;
for(x = 0; x<10; x++)




S2.

Mcur

Si no me equivoco, en C++ puedes declarar en el interior de un bycle for, mientras que en C debes declarar antes de definir dentro del propio for.

La primera opción seria para C++ y la segunda para C y C++.

Pero bueno, soy novato novato, llevo solo unos meses estudiando C++ y prefiero que te lo confirme uno de los maquinas que hay por aquí.

Un saludo.

yens

Cita de: "currilingo"Si no me equivoco, en C++ puedes declarar en el interior de un bycle for, mientras que en C debes declarar antes de definir dentro del propio for.

La primera opción seria para C++ y la segunda para C y C++.

Pero bueno, soy novato novato, llevo solo unos meses estudiando C++ y prefiero que te lo confirme uno de los maquinas que hay por aquí.

Un saludo.
Los novatos suelen ser los que más saben de esas cosas tan particulares que te deben comentar cuando estás aprendiendo ;)

Sí que estás en lo cierto en tu afirmación, desconozco si influiría en alguna cosa más.

[EX3]

A nivel de compilador supongo que sera en que la variable solo existe y tiene su ciclo de vida dentro del bucle for. Esto es, se crea e inicializa en la declaracion del for y se extinge al finalizar el bucle. De la otra forma la variable se crea en su declaracion y se extinguira al finalizar la funcion.

Esto al menos se que en C# es asi. No se si cambiara en C++.

Salu2...
José Miguel Sánchez Fernández
.NET Developer | Game Programmer | Unity Developer

Blog | Game Portfolio | LinkedIn | Twitter | Itch.io | Gamejolt

TheAzazel

Da lo mismo que lo mismo da... :P

1cacalvo

No hay forma mas bonita de comprobarlo que probarlo :D

Diferencial

[EX3] y currilingo, teneis los dos razón. Por lo tanto para ahorrar memoria, declararias la variable dentro del bucle solo en el caso de que no te sirva para nada más esa variable. Pero para el caso de que estes usando lenguaje C deberia de hacerlo con el segundo metodo.
PARA TENER COSAS QUE NUNCA HAS TENIDO, TENDRÁS QUE HACER COSAS QUE NUNCA HAS HECHO.

Buffon

Cita de: "yEnS"
Cita de: "currilingo"Si no me equivoco, en C++ puedes declarar en el interior de un bycle for, mientras que en C debes declarar antes de definir dentro del propio for.

La primera opción seria para C++ y la segunda para C y C++.

Pero bueno, soy novato novato, llevo solo unos meses estudiando C++ y prefiero que te lo confirme uno de los maquinas que hay por aquí.

Un saludo.
Los novatos suelen ser los que más saben de esas cosas tan particulares que te deben comentar cuando estás aprendiendo ;)

Sí que estás en lo cierto en tu afirmación, desconozco si influiría en alguna cosa más.

Pues los novatos mejor que nadie deberían saber que en C las variables se declaran al principio de la función y no después :) (aunque se hagan antes de un bucle for)

Güarmigue

Ahí está, lo suyo es declarar al principio de la función, además, así, si tienes que usar de nuevo un contador para otro bucle o lo que sea no tendrás que volver a declarar... con el consiguiente ahorro de memoria :)

Parece una tontería, pero si quieres hacer las cosas bien o optimizar por algún motivo, es mejor el segundo método. Además el código siempre es mas limpio y legible cuando está ordenado.
url=http://deadchannel.blogsome.com]Dead Channel[/url] - Blog de informática, juegos, tortugas y lo que me viene dando en gana ;P

1cacalvo

No hay forma mas bonita de comprobarlo que probarlo :D

ethernet

Cita de: "Güarmigue"Ahí está, lo suyo es declarar al principio de la función, además, así, si tienes que usar de nuevo un contador para otro bucle o lo que sea no tendrás que volver a declarar... con el consiguiente ahorro de memoria :)

depende de como funcione el compilador. Aparte, un ahorro de 4 bytes no es que vaya a llevar a ninguna parte. De todas formas si creas y destruyes la variable finalmente usarás la misma memoria, tal vez ahorras ciclos en sumas y restas de puntero de pila.

Cita de: "Güarmigue"
Parece una tontería, pero si quieres hacer las cosas bien o optimizar por algún motivo, es mejor el segundo método. Además el código siempre es mas limpio y legible cuando está ordenado.

A mi me parece más limpio usar variables para una cosa  en vez de usar varias veces la misma variable en la misma función para distintas cosas.

Güarmigue

CitarA mi me parece más limpio usar variables para una cosa en vez de usar varias veces la misma variable en la misma función para distintas cosas.

Hombre supongo que eso ya dependerá de gustos, pero a mi me enseñaron todo eso de la programación estructurada, separar el código de la declaración de variables... y me he eacostumbrado y me gusta así. Crear variables en todas partes hace que sea más dificil calcular la memoria estática que utilizas en caso de que te haga falta (por ejemplo en ensamblador, ¿móviles?)  y además puede llevar a declarar variables de distintos tipos de datos con el mismo nombre en distintas zonas de código, con lo que al final no sabes si 'c' es un int, un char o cualquier otra cosa.
url=http://deadchannel.blogsome.com]Dead Channel[/url] - Blog de informática, juegos, tortugas y lo que me viene dando en gana ;P

Vicente

La programación estructurada y eso de declarar las variables primero y luego ya el código en sí viene de la época en que los compiladores pedían eso como requisito para compilar. A mucha gente le gusta no declarar las variables excepto cuando se van a necesitar.

Cuestión de gusto. Un saludo!

Vicente

Lex


ethernet

Cita de: "Güarmigue"
Hombre supongo que eso ya dependerá de gustos, pero a mi me enseñaron todo eso de la programación estructurada, separar el código de la declaración de variables... y me he eacostumbrado y me gusta así.

void hacerAlgo()
{
  int var1;
  int var2;
  int var3;

   cosas con var1;
//100 lineas después
  cosas con var2;
//100 lineas despues
  cosas con var3;

}

qué prefieres, declararlas donde toca o al comienzo? Ahora los editores dan mucha ayuda y no importa tanto, pero lo mejor (para mi) es declarar la variable en el contexto, por ejemplo:

for(int nSprites = 0; nSprites < maxSprites; nSprites++)
{
  renderSprite(nSprite);
}

si declaro la variable en el bucle es mucho más lógico que hacerlo al comienzo.

Cita de: "Güarmigue"
Crear variables en todas partes hace que sea más dificil calcular la memoria estática que utilizas en caso de que te haga falta (por ejemplo en ensamblador, ¿móviles?)  

Con ensamblador no hay variables (tal cual hablamos ahora) y en los móviles con la puta mierda de VM que hay sería imposible saber la memoria que usas.
Cita de: "Güarmigue"
y además puede llevar a declarar variables de distintos tipos de datos con el mismo nombre en distintas zonas de código, con lo que al final no sabes si 'c' es un int, un char o cualquier otra cosa.

Las variables pierden su validez cuando no están en su contexto (otro punto más para tener variables por bloques) y el nombre c de una variable no es precisamente adecuado.






Stratos es un servicio gratuito, cuyos costes se cubren en parte con la publicidad.
Por favor, desactiva el bloqueador de anuncios en esta web para ayudar a que siga adelante.
Muchísimas gracias.