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

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

Barbara Streisand
Libérer: 2024-10-24 10:50:29
original
982 Les gens l'ont consulté

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!

source:php
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
À propos de nous Clause de non-responsabilité Sitemap
Site Web PHP chinois:Formation PHP en ligne sur le bien-être public,Aidez les apprenants PHP à grandir rapidement!