TODOPIC

Microcontroladores PIC => Lenguaje C para microcontroladores PIC => Mensaje iniciado por: remi04 en 02 de Mayo de 2020, 06:49:12

Título: ¿Es esto un bug de xc8 o algo no hago bien?
Publicado por: remi04 en 02 de Mayo de 2020, 06:49:12
Código: C
  1. uint16_t variable = 345;
  2. uint16_t variable2 = 400;
  3. uint16_t variable3 = 120;
  4.  
  5. printf("\r\nVariable1: %u, variable2: %u, variable3: %u",variable,variable2,variable3);
  6. printf("Variable3: %u",variable3);


SALIDA A LA TERMINAL:

Variable1: 345, variable2: 400, variable3: 0
Variable3: 120


El primer print me saca 0 como valor de la variable 3. El segundo me lo saca bien.  ¿Por qué?.

es mas, si hago esto:

Código: C
  1. printf("\r\nVariable1: %u, variable2: %u, variable3: %u",variable,variable2);

Estoy pidiendo tres valores pero le estoy dando solo dos variables, falta la tercera. No da error. Compila bien y el valor de la tercera sigue siendo 0.

 
Título: Re:¿Es esto un bug de xc8 o algo no hago bien?
Publicado por: KILLERJC en 02 de Mayo de 2020, 09:01:09
Si debe ser un bug.... No encuentro nada que limite a un maximo de caracteres ni nada por el estilo. Podes probar:

Código: C
  1. printf("\r\n%u, %u, %u",variable,variable2,variable3);

Y ver el resultado... Si funciona tiene que ver algo con los caracteres... Sino es algun problema del compilador y el uso de stdarg.h
Nunca use el printf de XC8 siempre use algun otro como estos:

https://github.com/heartoftechnology/embedded-printf/tree/master/embedded_printf
https://github.com/mludvig/mini-printf/blob/master/mini-printf.c

Por supuesto, tienen sus limitaciones.. casi ninguno transforma de float a string... ya que es lo que mas ocupa..