Foro de elhacker.net

Programación => Programación C/C++ => Mensaje iniciado por: lanun en 28 Febrero 2014, 18:45 pm



Título: Problema representación dirección de memoria en C.
Publicado por: lanun en 28 Febrero 2014, 18:45 pm
Hola, estoy teniendo un problema al intentar representar una variable hexadecimal en C, concretamente la ubicación de un puntero, pues no puedo utilizar %x, sólo %p (este último no muestra en hexadecimal).
Concretamente, las líneas son éstas:

  int v1;
  v1=4;
  printf("dir_v1=%x v1=%d\n",&v1,v1);

Éste es el error que me lanza:

warning: format ‘%x’ expects argument of type ‘unsigned int’, but argument 2 has type ‘int *’

Gracias, probablemente sea alguna tontería, pero es que acabo de empezar a aprender C.


Título: Re: Problema representación dirección de memoria en C.
Publicado por: x64core en 28 Febrero 2014, 19:06 pm
Hola, estoy teniendo un problema al intentar representar una variable hexadecimal en C, concretamente la ubicación de un puntero, pues no puedo utilizar %x, sólo %p (este último no muestra en hexadecimal).
Concretamente, las líneas son éstas:

  int v1;
  v1=4;
  printf("dir_v1=%x v1=%d\n",&v1,v1);

Éste es el error que me lanza:

warning: format ‘%x’ expects argument of type ‘unsigned int’, but argument 2 has type ‘int *’

Gracias, probablemente sea alguna tontería, pero es que acabo de empezar a aprender C.

Es simplemente un Warning, lo que haces es pasarle la direccion de una variable en el segundo parametro pero en el formato se espera de tipo
un entero sin signo, el código funcionará sin problemas es simplemente un aviso del compilador si por alguna razon no son esas las intenciones
del programador. se resuelve usando %p o un casting aunque lo mejor seria %p.


Título: Re: Problema representación dirección de memoria en C.
Publicado por: lanun en 28 Febrero 2014, 19:24 pm
Gracias por responder tan rápido, ¿hay alguna forma de evitar ese warning utilizando %x?, básicamente lo digo porque esta duda me ha surgido repasando una asignatura de la universidad, donde hemos utilizado %x en clase sin que diera este error.

Gracias.


Título: Re: Problema representación dirección de memoria en C.
Publicado por: x64core en 28 Febrero 2014, 19:25 pm
Gracias por responder tan rápido, ¿hay alguna forma de evitar ese warning utilizando %x?, básicamente lo digo porque esta duda me ha surgido repasando una asignatura de la universidad, donde hemos utilizado %x en clase sin que diera este error.

Gracias.
usando un casting.


Título: Re: Problema representación dirección de memoria en C.
Publicado por: lanun en 28 Febrero 2014, 19:27 pm
Perdona, pero es que estoy aprendiendo C en estos momentos y no sé a lo que te refieres.

Puede se ésto:
int v4;
  v1=4;
  printf("dir_v1=%p     v1=%d\n",(int*)&v1,v1);

??


Título: Re: Problema representación dirección de memoria en C.
Publicado por: x64core en 28 Febrero 2014, 19:28 pm
Perdona, pero es que estoy aprendiendo C en estos momentos y no sé a lo que te refieres.

Código:
 int v1;
  v1=4;
  printf("dir_v1=%x v1=%d\n",(unsigned int)&v1,v1);


Título: Re: Problema representación dirección de memoria en C.
Publicado por: lanun en 28 Febrero 2014, 19:44 pm
Gracias por la ayuda.