Foros del Web » Programación para mayores de 30 ;) » C/C++ »

Problema con inicialización de variable

Estas en el tema de Problema con inicialización de variable en el foro de C/C++ en Foros del Web. No entiendo por qué esta variable vale "1", precisamente...¿es casualidad? Da igual si lo ejecuto en máquinas distintas...siempre vale "1". ¿Por qué? #include <iostream> using ...
  #1 (permalink)  
Antiguo 03/05/2012, 14:26
 
Fecha de Ingreso: mayo-2012
Mensajes: 5
Antigüedad: 12 años
Puntos: 0
Problema con inicialización de variable

No entiendo por qué esta variable vale "1", precisamente...¿es casualidad? Da igual si lo ejecuto en máquinas distintas...siempre vale "1". ¿Por qué?

#include <iostream>
using namespace std;


int main(){

int auxiliar;
cout << auxiliar << "\n";

return 0;

}

Saludos,

Jose
  #2 (permalink)  
Antiguo 03/05/2012, 14:52
 
Fecha de Ingreso: abril-2010
Ubicación: Rosario
Mensajes: 1.850
Antigüedad: 14 años, 1 mes
Puntos: 228
Respuesta: Problema con inicialización de variable

Yo lo probe y en mi maquina vale: 10026996

Eso pasa porque no la inicializaste a ningun valor. Asi que la variable toma valores basura que habia en ese momento en la memoria.

En tu casa como debes usar el mismo compilador en las dos maquinas, resulta que es uno.... en la mia fue ese numero gigante. Es mas cambia cada vez que lo ejecuto.

Saludos
  #3 (permalink)  
Antiguo 05/05/2012, 14:28
 
Fecha de Ingreso: mayo-2012
Mensajes: 5
Antigüedad: 12 años
Puntos: 0
Respuesta: Problema con inicialización de variable

Probé a inicializarla a 30, por ejemplo. Entonces, evidentemente, al hacer cout, el valor me presentaba 30. Pero una vez hecho esto, volví al estado anterior del programa, es decir, sin inicializar la variable auxiliar a ningún valor. Pensé, que, al haber asignado un valor a la posición de memoria que ocupaba auxiliar, ya había "machacado" el 1. Pero, sorprendentemente para mi, no es así; al ejecutar, vuelve a adquirir el dichoso "1".

Si declaras otra variable más, da igual antes que después, el valor de auxiliar ya deja de ser "1" para tomar otro valor arbitrario.

La verdad es que no acabo de entender cómo funciona esto.

Saludos y gracias.
  #4 (permalink)  
Antiguo 05/05/2012, 14:49
 
Fecha de Ingreso: diciembre-2011
Ubicación: CABA
Mensajes: 433
Antigüedad: 12 años, 4 meses
Puntos: 94
Respuesta: Problema con inicialización de variable

Hola! no hay mucho para entender, es como dijo sam
Cita:
Eso pasa porque no la inicializaste a ningun valor. Asi que la variable toma valores basura que habia en ese momento en la memoria.
Si bien te imprime 1 sigue siendo basura ya que vos no lo asignaste.... No tiene nada q ver que inicialices tu variable con algun valor(30) y luego no lo hagas; el 30 no qda en la memoria y al volver a ejecutar el programa no se va a imprimir 30 ni va a borrar ese 1

En otros lenguajes, de nivel mas alto, las variables se suelen inicializar con un valor predeterminado, cero generalmente

Saludos
  #5 (permalink)  
Antiguo 05/05/2012, 16:18
 
Fecha de Ingreso: mayo-2012
Mensajes: 5
Antigüedad: 12 años
Puntos: 0
Respuesta: Problema con inicialización de variable

Muchas gracias. Ya veo que en esto del C++ no hay mucho que entender. (Me ha parecido gracioso el comentario, ya ves...)

Última edición por lloretcortes; 05/05/2012 a las 16:31
  #6 (permalink)  
Antiguo 05/05/2012, 17:04
 
Fecha de Ingreso: diciembre-2011
Ubicación: CABA
Mensajes: 433
Antigüedad: 12 años, 4 meses
Puntos: 94
Respuesta: Problema con inicialización de variable

ajajja xq editas la respuesta justo te iba a responder :(, pero bueno como vos decis no hay mucho para entender puede ser, una cosa es aprender el lenguaje otra saber a fondo como trabaja el compilador, el modelo de momoria..(este es un foro de C/C++)... Avisame cuando le puedas cambiar la asignacion "aleatoria" a tu variable asi yo puedo hacer lo mismo :)

EDIT: para q no haya confusiones, no preguntes
Cita:
No entiendo por qué esta variable vale "1",
Aca y en cualquier foro la respuesta va seguir siendo la misma ;)
  #7 (permalink)  
Antiguo 05/05/2012, 17:37
 
Fecha de Ingreso: abril-2010
Ubicación: Rosario
Mensajes: 1.850
Antigüedad: 14 años, 1 mes
Puntos: 228
Respuesta: Problema con inicialización de variable

Me gustaria saber que compilador estas usando?? No te des tanto rosca con algo que deberias controlar. Todas las variables tiene que ser inicializadas a algun valor. En ninguna logica tiene sentido dejar un valor al destino.

Saludos
  #8 (permalink)  
Antiguo 06/05/2012, 02:01
 
Fecha de Ingreso: mayo-2012
Mensajes: 5
Antigüedad: 12 años
Puntos: 0
Respuesta: Problema con inicialización de variable

Gracias por vuestra ayuda. Ayer estaba algo alterado y tal vez respondí de mala manera. Estoy acostumbrado a trabajar con autómatas programables industriales, en los que casi siempre hay que "alocatar" la dirección física de las variables. Desde la época del MS-DOS que no programaba con lenguajes de más bajo nivel (hasta ahora trabajaba con Visual Basic). Antes recuerdo que trabajaba con Pascal y la memoria estaba más "accesible". Ahora, con Windows, el sistema operativo controla más las localizaciones de memoria.
Utilizo Microsoft Visual C++ Express Edition para empezar a aprender. No sé si es mejor algún otro compilador. No es que me haga falta localizar físicamente las variables, es pura curiosidad lo que me mueve a averiguar cómo gestiona el compilador la memoria del ordenador. Estuve leyendo en alguna web cómo lo hace, y no es fácil, la verdad.

Un saludo, y gracias otra vez.
  #9 (permalink)  
Antiguo 06/05/2012, 03:21
 
Fecha de Ingreso: mayo-2012
Mensajes: 5
Antigüedad: 12 años
Puntos: 0
Respuesta: Problema con inicialización de variable

Lo voy a mirar con WriteProcessMemory...
  #10 (permalink)  
Antiguo 06/05/2012, 06:04
 
Fecha de Ingreso: agosto-2009
Mensajes: 16
Antigüedad: 14 años, 8 meses
Puntos: 2
Respuesta: Problema con inicialización de variable

Cita:
Iniciado por lloretcortes Ver Mensaje
Lo voy a mirar con WriteProcessMemory...
writeprocessmemory? no te hace falta usar esa api.

simplemente leete un poquito sobre memoria virtual y su gestion. en msdn tienes mucha informacion al respecto.

Etiquetas: variables
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 00:23.