"Si un trabajador quiere hacer bien su trabajo, primero debe afilar sus herramientas." - Confucio, "Las Analectas de Confucio. Lu Linggong"
Página delantera > Programación > ¿Todas las funciones variables promueven argumentos "flotantes" a "dobles"?

¿Todas las funciones variables promueven argumentos "flotantes" a "dobles"?

Publicado el 2024-11-16
Navegar:963

Do All Variadic Functions Promote `float` Arguments to `double`?

Promoción del argumento flotante para duplicarse en funciones variables

En una discusión anterior, se observó que printf() promueve un argumento flotante para un doble antes de aceptarlo. Esto plantea la pregunta: ¿todas las funciones variadic realizan esta promoción?

Promoción de argumentos variadic

Sí, de acuerdo con los estándares C99 y C, los argumentos flotantes se pasan a variadic las funciones se promocionan al doble.

Especificaciones estándar

  • C99 (sección 6.5.2.2): "los argumentos que tienen tipo flotante se promueven a doble."
  • C (sección 5.2.2): "un tipo de punto flotante... se convierte al tipo promocionado antes de la llamada."
  • C (sección 4.6): "Un valor pr de tipo float se puede convertir en un valor pr de tipo double. el valor no ha cambiado."

cppreference en conversiones de funciones variables

cppreference proporciona un resumen de las conversiones predeterminadas para funciones variables en C:

  • std::nullptr_t para anular*
  • Argumentos flotantes para doble
  • Promoción entera para bool, char, short y enumeraciones

Origen de la promoción

Esta promoción se introdujo en C por compatibilidad con el estándar K&R C, a pesar de sus posibles inconvenientes. Como establece el fundamento de C:

"Para compatibilidad con prácticas anteriores, todas las promociones de argumentos ocurren como se describe en K&R en ausencia de una declaración de prototipo, incluida la promoción no siempre deseable de float a double".

Último tutorial Más>

Descargo de responsabilidad: Todos los recursos proporcionados provienen en parte de Internet. Si existe alguna infracción de sus derechos de autor u otros derechos e intereses, explique los motivos detallados y proporcione pruebas de los derechos de autor o derechos e intereses y luego envíelos al correo electrónico: [email protected]. Lo manejaremos por usted lo antes posible.

Copyright© 2022 湘ICP备2022001581号-3