Opérateur exponentiel en C++
je prends un cours de C++ et j'ai remarqué qu'il n'y a que quelques opérateurs mathématiques à utiliser. J'ai aussi remarqué que C++ ne vient pas avec un opérateur exponentiel dans sa bibliothèque de maths.
Pourquoi faut-il toujours écrire une fonction pour cela? Y a-t-il une raison pour que les fabricants de c++ omettent cet opérateur?
4 réponses
Vous ne pas écrire une fonction pour cela (sauf si vous êtes fou, bien sûr). Il y a une parfaitement bonne pow
fonction définie dans l'en-tête <cmath>
.
mis à part: si vous essayez d'utiliser
^
comme un opérateur de puissance, comme certaines personnes sont habitués à le faire, vous serez dans pour une mauvaise surprise. C'est l'opérateur exclusif (XOR) (voir ici ).
la plupart des opérations C facilement destiné à mappé à une instruction de processeur unique lorsque C a été inventé. À l'époque, l'exponentiation n'était pas une instruction machine, donc la routine de bibliothèque.
, Selon Bjarne Stroustrup dans son livre La conception et l'évolution de C++ . Ils ont décidé d'éviter l'opérateur exponentiel parce que:
- un opérateur fournit une commodité notionnelle, mais ne fournit aucune nouvelle fonctionnalité. Les membres du groupe de travail, qui représentent de nombreux utilisateurs du calcul scientifique et technique, ont indiqué que la syntaxe de l'opérateur offre une commodité syntaxique mineure.
- chaque l'utilisateur de C++ doit apprendre cette nouvelle fonctionnalité
- les utilisateurs ont souligné l'importance de remplacer leurs propres fonctions d'exponentiation spécialisées par la valeur par défaut du système, ce qui ne serait pas possible avec un opérateur intrinsèque
- La proposition n'est pas suffisamment motivé. En particulier, en regardant un programme Fortran de 30000 lignes on ne peut pas conclure que l'opérateur serait largement utilisé en C++
- la proposition exige l'ajout un nouvel opérateur et l'ajout d'un autre niveau de priorité augmentant ainsi la complexité du langage
quelle plate-forme et quel compilateur utilisez-vous? Ma conjecture est TurboC. La plupart du temps fichier cmath a la plupart des fonctions mathématiques couvertes par d'autres compilateurs.