Tipos Valor y Tipos Referencia(Solucionado)

Iniciado por Senior++, 3 Noviembre 2014, 17:14 PM

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

Senior++

Bueno resulta que estaba "explorando" un foro y un usuario dijo esto:

int variableUno;
variableuno= 57

int variableDos;
variableDos = variableUno
variableUno++


VariableUno crea un espacio en memoria y luego le asigna el valor 57 (hasta aquí estoy de acuerdo)
variableDos crea una espacio en memoria y luego le asigna el valor de variableUno(57)

VariableUno tiene el valor 58 en memoria
variableDos tiene el valor 57 en memoria
Hasta aquí todo perfecto

Pero en este codigo cambia la cosa

int variableUno;
variableuno= 57
variableUno++
int variableDos;
variableDos = variableUno

VariableUno tiene el valor 58 en memoria
variableDos tiene el valor 57 en memoria

osea eso esta mal no? es decir tendria que tener 58 los dos no?
Vendo cuenta de LEAGUE OF LEGENDS lvl 30, EU west, muy barata

El Benjo

#1
Sí, así es. No entiendo por qué la duda me refiero a que bastaría con hacer el programa (en cualquier lenguaje) y la respuesta ahí está. Es decir si cualquiera de los dos tiene la duda de qué es lo que pasa, sólo tiene que escribir el código y ejecutar.

MODIFICADO: No entiendo por qué el título de tu post si nunca haces la comparación entre valor y referencia.

Quizá lo que te estés preguntando sea por ejemplo sobre asignar la dirección de una variable en una variable de tipo referencia (como un puntero en C/C++). Si la variableDos fuera un puntero y le asignas la dirección de variableUno entonces su valor no cmabia cuando el valor de la variableUno cambia, pero nunca contiene el valor '57' sino la dirección de la variableUno.

Si necesita más información lee sobre punteros.
www.es.neftis-ai.com

Sí hay un mejor lenguaje de programación y es ese con el que puedes desarrollar tus objetivos.

Senior++

Cita de: El Benjo en  3 Noviembre 2014, 19:34 PM
Sí, así es. No entiendo por qué la duda me refiero a que bastaría con hacer el programa (en cualquier lenguaje) y la respuesta ahí está. Es decir si cualquiera de los dos tiene la duda de qué es lo que pasa, sólo tiene que escribir el código y ejecutar.

MODIFICADO: No entiendo por qué el título de tu post si nunca haces la comparación entre valor y referencia.

Quizá lo que te estés preguntando sea por ejemplo sobre asignar la dirección de una variable en una variable de tipo referencia (como un puntero en C/C++). Si la variableDos fuera un puntero y le asignas la dirección de variableUno entonces su valor no cmabia cuando el valor de la variableUno cambia, pero nunca contiene el valor '57' sino la dirección de la variableUno.

Si necesita más información lee sobre punteros.
:rolleyes:

El titulo del post, me equivoque  :xD

entonces estoy en lo cierto no?osea si llamamos las 2 variables deberian de devolver las dos 58

En este ejemplo esta mas que claro:

int i;
            int j;

            i = 1;
            j = i;
            i++;
            j--;
            Console.WriteLine(String.Format("i={0} j={1}", i, j));

            // i=2 j=0, porque al asignar j=i, lo que hacemos es
            // una copia de su contenido.

            Console.ReadKey();


Por que los tipos valor, siempre actuan INDEPENDIENTE el uno del otro, y claro al ver eso en un foro que de hecho es un CURSO, me dolía hasta los ojos  :laugh:
Vendo cuenta de LEAGUE OF LEGENDS lvl 30, EU west, muy barata

Eleкtro

Cita de: Senior++ en  3 Noviembre 2014, 20:13 PMentonces estoy en lo cierto no?osea si llamamos las 2 variables deberian de devolver las dos 58

Sí. Podrías haberlo comprobado por ti mismo como ya te han comentado.

Saludos








Senior++

Cita de: Eleкtro en  3 Noviembre 2014, 20:40 PM
Sí. Podrías haberlo comprobado por ti mismo como ya te han comentado.

Saludos
Claro,me dejo en duda, pero bueno ya lo habia probado yo :xD


Bueno tema solucionado, vaya fail  :rolleyes:
Vendo cuenta de LEAGUE OF LEGENDS lvl 30, EU west, muy barata

DarK_FirefoX

#5
Cita de: Senior++ en  3 Noviembre 2014, 17:14 PM
osea eso esta mal no? es decir tendria que tener 58 los dos no?

Exactamente como dices ambos valores debieron ser iguales.

Y como bien dice El Benjo, si quieres puedes eplorar los conceptos básicos sobre punteros en C/C++ para entender un poquito más como se trabaja con las direcciones de memoria.

Una sugerencia para tu codigo aqui:

Código (csharp) [Seleccionar]

int i;
int j;

i = 1;
j = i;
i++;
j--;
Console.WriteLine("i={0} j={1}", i, j);

/*AQUÍ EN ESTA ^ LINEA NO NECESITABAS
* EL MÉTODO string.Format() PARA UTILIZAR LOS
*PLACEHOLDERS {#} EN EL MÉTODO Console.WriteLine().
*Solo una sugerencia!*/

// i=2 j=0, porque al asignar j=i, lo que hacemos es
// una copia de su contenido.

Console.ReadKey();