TODOPIC
Microcontroladores PIC => Lenguaje C para microcontroladores PIC => Mensaje iniciado por: Protheus5 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. 
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
-
Holas, te respondo a la primera pregunta....
¿Has probado a poner printf("%Lu", numero);?
Espero q así te funcione
Saludos!!
-
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
-
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!!