Maison > développement back-end > C++ > le corps du texte

Pourquoi les arguments flottants sont-ils promus pour doubler dans printf() et d'autres fonctions variadiques ?

DDD
Libérer: 2024-11-19 08:22:02
original
938 Les gens l'ont consulté

Why Are Float Arguments Promoted to Double in printf() and Other Variadic Functions?

Promotion des arguments flottants pour doubler dans printf()

Dans une discussion précédente, il a été noté que lorsqu'un flottant est passé à printf (), il est promu double avant d'être utilisé par la fonction. Ce comportement n'est pas spécifique à printf() mais plutôt à toutes les fonctions variadiques.

En l'absence de déclaration de prototype, toutes les promotions d'arguments en C et C se produisent comme défini dans le standard K&R C. Cela inclut la promotion du double des arguments float, même lorsque cela n'est pas souhaitable.

Promotion des arguments de fonction variadique

Selon la norme C99 (Section 6.5.2.2), les arguments de type float sont promus en double avant d'être passés aux fonctions variadiques. De même, la norme C (Section 5.2.2) indique que les arguments à virgule flottante sont convertis en type promu (double) avant l'appel de la fonction.

cppreference fournit un aperçu clair des conversions par défaut pour les fonctions variadiques en C. , y compris la conversion des arguments float en double.

Compatibilité avec K&R C

La promotion des arguments float pour doubler dans les fonctions variadiques a été conservée en C et C pour des raisons de compatibilité avec la norme originale K&R C. Malgré les inquiétudes concernant le risque de perte de données, cette conversion reste en place pour des raisons de compatibilité ascendante.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal