Promotion de l'argument float pour doubler dans les fonctions variables
Dans une discussion précédente, il a été noté que printf() promeut un argument float pour un doublé avant de l'accepter. Cela soulève la question : toutes les fonctions variadiques effectuent-elles cette promotion ?
Promotion des arguments variadiques
Oui, selon les standards C99 et C, les arguments float sont transmis aux fonctions variadiques. les fonctions sont promues en double.
Spécifications standard
cppreference sur la fonction variadique Conversions
cppreference fournit un résumé des conversions par défaut pour les fonctions variadiques en C :
Origine de la promotion
Cette promotion a été introduite en C pour des raisons de compatibilité avec la norme K&R C, malgré ses inconvénients potentiels. Comme l'indique la justification C :
"Pour des raisons de compatibilité avec les pratiques passées, toutes les promotions d'arguments se produisent comme décrit dans K&R en l'absence de déclaration prototype, y compris la promotion pas toujours souhaitable de float pour doubler."
Clause de non-responsabilité: Toutes les ressources fournies proviennent en partie d'Internet. En cas de violation de vos droits d'auteur ou d'autres droits et intérêts, veuillez expliquer les raisons détaillées et fournir une preuve du droit d'auteur ou des droits et intérêts, puis l'envoyer à l'adresse e-mail : [email protected]. Nous nous en occuperons pour vous dans les plus brefs délais.
Copyright© 2022 湘ICP备2022001581号-3