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!