Autor Tema: ¿Es esto un bug de xc8 o algo no hago bien?  (Leído 1744 veces)

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

Desconectado remi04

  • PIC24F
  • *****
  • Mensajes: 657
¿Es esto un bug de xc8 o algo no hago bien?
« 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.

 

Desconectado KILLERJC

  • Colaborador
  • DsPIC33
  • *****
  • Mensajes: 8242
Re:¿Es esto un bug de xc8 o algo no hago bien?
« Respuesta #1 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..
« Última modificación: 02 de Mayo de 2020, 09:06:51 por KILLERJC »


 

anything