es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

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?

Tags:  , ,

Answer

  1. Avatar for 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:

    sprintf(debugstr, "Cntr ticks:%d freq:%1.1f\r\n", ctphp, (double)freq);
    

    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.

Comments are closed.