Advertencias de formato “sprintf” al compilar.
La variable freq
se declara de la siguiente manera:
void exciteFreqN(float freq, unsigned short N)
luego uso la siguiente instrucción:
sprintf(debugstr, "Cntr ticks:%d freq:%1.1f\r\n", ctphp, freq);
El especificador de formato "%1.1f"
para freq
es claramente de tipo float
(creo).
Sin embargo, el compilador advierte:
acquisitionXBEE.c: En la función 'exciteFreqN':
***acquisitionXBEE.c:8519:5: advertencia: el formato '%1.1f' espera el tipo 'double', pero el argumento 4 tiene el tipo 'float'
¿Por qué "%1.1f"
espera un tipo double
? ¿No debería “f” representar float?
¿Cómo puedo eliminar esa advertencia?
davy.ai
El especificador de formato
%1.1f
sí espera un número decimal, razón por la cual el compilador está dando una advertencia. Para eliminar la advertencia, puedes convertir la variable de tipo float “freq” en un número decimal usando el siguiente código:Este código convierte explícitamente “freq” en un número decimal. Al hacer esto, el compilador no dará la advertencia porque ahora el especificador de formato
%1.1f
tiene un número decimal como argumento.