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
cppreference sur les conversions de fonctions variadiques
cppreference fournit un résumé des conversions par défaut pour les conversions variadiques fonctions en C :
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!