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

Toutes les fonctions variadiques favorisent-elles les arguments « flottants » en « double » ?

Barbara Streisand
Libérer: 2024-11-23 06:21:16
original
680 Les gens l'ont consulté

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

Promotion de l'argument float pour doubler dans les fonctions variadiques

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 passés à variadique les fonctions sont promues au double.

Standard Spécifications

  • C99 (section 6.5.2.2) : "les arguments de type float sont promus en double."
  • C ( section 5.2.2) : "un type à virgule flottante... est converti en type promu avant le call."
  • C (section 4.6) : "Une prvalue de type float peut être convertie en une prvalue de type double."

cppreference sur les conversions de fonctions variadiques

cppreference fournit un résumé des conversions par défaut pour les conversions variadiques fonctions en C :

  • std::nullptr_t pour annuler*
  • Arguments flottants pour doubler
  • Promotion entière pour bool, char, short et énumérations

Origine de Promotion

Cette promotion a été introduite en C pour des raisons de compatibilité avec le standard 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."

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
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal