Maison >développement back-end >C++ >Toutes les fonctions variadiques favorisent-elles le doublement des arguments flottants ?
Promotion de la fonction variadique des arguments flottants pour doubler dans printf()
En C et C, la fonction printf() est une fonction variadique cela prend un nombre variable d'arguments. Un comportement particulier de printf() est que lorsqu'un argument float est passé, il est converti en double avant que la fonction ne le reçoive. Cela soulève la question : toutes les fonctions variadiques favorisent-elles le double des arguments flottants ?
Réponse :
Oui, les fonctions variadiques en C et C favorisent le double des arguments flottants.
Justification :
Ce comportement est spécifié à la fois dans les normes C99 et C. Le projet de norme C99 précise que « les arguments de type float sont promus en double » pour les fonctions variadiques. De même, la norme C stipule que "pour un type à virgule flottante soumis à la promotion à virgule flottante, la valeur de l'argument est convertie en type promu avant l'appel."
La justification de cette promotion est de maintenir la compatibilité avec la norme K&R C, qui exigeait que les arguments float soient promus au double en l'absence de déclaration de prototype. Bien que pas toujours souhaitable, cette compatibilité a été préservée pour des raisons de rétrocompatibilité.
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!