Maison >développement back-end >C++ >Pourquoi Printf() favorise-t-il les flotteurs en double ?

Pourquoi Printf() favorise-t-il les flotteurs en double ?

DDD
DDDoriginal
2024-11-17 08:09:03529parcourir

Why does Printf() promote floats to doubles?

Plongée approfondie : Pourquoi Printf() favorise le doublement des nombres à virgule flottante en nombres à virgule flottante double précision

Pourquoi Printf() favorise le doublement des paramètres flottants , pas seulement parce que c'est une fonction variadique. Selon le standard C et le standard C, tous les arguments float des fonctions variadiques sont promus au double avant d'être transmis.

La section 6.5.2.2 de la norme C99 indique clairement : "[...] Les paramètres de type à virgule flottante sont promus au double. Ceux-ci sont appelés promotions de paramètres par défaut. [...]"

La section 5.2.2 du projet de norme C indique également : "[...] Si un paramètre de type à virgule flottante est affecté par la promotion à virgule flottante (4.6), la valeur du paramètre sera convertie en type promu avant le call. [.. .]"

De plus, la section 4.6 indique : "Une valeur pr de type float peut être convertie en une valeur pr de type double"

. Cppreference résume bien C. La conversion par défaut des fonctions de paramètre variable : "

  • std::nullptr_t est converti en void*
  • le paramètre float est converti en double, conformément à la virgule flottante. promotion
  • les énumérations bool , char, short et sans domaine sont converties en entiers entiers ou plus larges, conformément à la promotion entière

En C, cette conversion est destinée à la compatibilité avec K&R C . La spécification de la norme internationale (Langage de programmation - C) indique clairement : "Pour des raisons de compatibilité avec les pratiques antérieures, en l'absence de déclarations de prototypes, toutes les promotions de paramètres sont effectuées comme décrit par K&R, y compris float pour doubler l'amélioration . "

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!

Déclaration:
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