Maison >développement back-end >C++ >Pourquoi la bibliothèque C standard n'a-t-elle pas de fonction d'exponentiation entière (pow(int, int)) ?

Pourquoi la bibliothèque C standard n'a-t-elle pas de fonction d'exponentiation entière (pow(int, int)) ?

Barbara Streisand
Barbara Streisandoriginal
2024-10-24 10:50:291099parcourir

Why Does the Standard C   Library Lack an Integer Exponentiation Function (pow(int, int))?

Pourquoi les bibliothèques C standard n'ont pas la fonction pow(int, int)

L'absence de surcharge d'entiers pour la fonction pow en C a été une curieuse lacune pour de nombreux programmeurs. Malgré la simplicité de la fonction, elle est restée limitée aux arguments à virgule flottante.

Inclusion partielle de C 11

À partir de C 11, la fonction pow a gagné des cas particuliers gérant des nombres entiers arguments. Ces surcharges permettent de convertir implicitement des paramètres entiers en doubles, couvrant ainsi le cas de l'exponentiation entière.

Raison d'être pré-C 11

Avant C 11, le manque des surcharges d'entiers pour pow peuvent être attribuées à plusieurs facteurs :

  • Inutile : Les mécanismes existants comme l'exponentiation d'entiers utilisant des doubles fournissaient des fonctionnalités suffisantes.
  • C Héritage : Le langage C original, sur lequel C était basé, n'incluait pas de puissances intégrales.
  • Coût d'opportunité : Les organismes de normalisation ont considéré que d'autres fonctionnalités, telles que le multithreading, pour avoir plus d'impact qu'une surcharge de pow spécifique à un entier.

Limitations des organismes de normalisation

Les organismes de normalisation comme l'ANSI et l'ISO adhèrent aux directives qui limitent la portée d'ajouts de langue. Les principes directeurs consistant à « garder le langage petit » et à « fournir une façon d'effectuer une opération » pesaient contre l'inclusion d'une fonction pow intégrale.

Conclusion

Alors l'absence d'une fonction pow dédiée aux entiers peut sembler une omission mineure, elle reflète la complexité de l'évolution du langage et les compromis faits par les organismes de normalisation. L'inclusion de cas particuliers dans C 11 apporte une solution partielle, mais l'absence d'une surcharge d'entiers entièrement implémentée reste une limitation pour certains cas d'utilisation.

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