Autor Tema: Declarar datos de 32 bits  (Leído 1915 veces)

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

Desconectado Protheus5

  • PIC10
  • *
  • Mensajes: 37
Declarar datos de 32 bits
« en: 26 de Mayo de 2005, 12:22:00 »
Hola gente, hace poco me surgió una duda a la hora de programar.

Me di cuenta de que el compilador CCS difiere del C de toda la vida en la longitud de los datos definidos.

En un programa que hice en Visual C, declaré un dato long, que son 32 bits, pero a la hora de usar C, el long es de 16 bits.

He visto en la ayuda del compilador que para declarar un dato de 32 bits, se puede usar INT32. Bien, pero cómo lo imprimo??

(NOTA: no puedo declararlo como float porque este tipo de datos no admite ciertas operaciones como desplazamientos de bits,...)

Si hago ésto:

unsigned int32 numero;
numero=99999;

printf("%u", numero);

tengo un problema, porque no me imprime 99999. Enfurruñado

Sabeis cual es la sentencia adecuada para que el printf me saque un INT32???


Otra duda: si hago una conversion al principio del progrma mediante la sentencia #TYPE, para hacer corresponder datos entre CCS y C normal

ejemplo: #TYPE  SHORT=8, INT=16, LONG=32


me surge otra duda: como le digo a la expresion printf que me imprima un short???

Eso en la ayuda no viene.
Os agradezco cualquier comentario que podais hacer

Un saludo

Desconectado Xelene

  • PIC12
  • **
  • Mensajes: 81
RE: Declarar datos de 32 bits
« Respuesta #1 en: 27 de Mayo de 2005, 02:27:00 »
Holas, te respondo a la primera pregunta....

¿Has probado a poner printf("%Lu", numero);?

Espero q así te funcione

Saludos!!

Desconectado pocher

  • Moderador Local
  • DsPIC30
  • *****
  • Mensajes: 2569
RE: Declarar datos de 32 bits
« Respuesta #2 en: 28 de Mayo de 2005, 00:42:00 »
Sí, como dice Xelene con "lu" te imprimirá el int32.

Si con type tienes declarada una variable de 8 bits tendrás que imprimirla con "u". Las de 16 y 32 con "lu"

Un saludo

Desconectado Protheus5

  • PIC10
  • *
  • Mensajes: 37
RE: Declarar datos de 32 bits
« Respuesta #3 en: 28 de Mayo de 2005, 03:48:00 »
Efectivamente Xelene, poniedo %lu me imprime el int32.

No se por que no lo probe antes, quiza me confundia el long unsigned.....

Gracias Xelene y Pocher por las aclaraciones, un saludo!! Giño


 

anything