Warum hat C ++ keinen Power Operator?
Viele Sprachen haben eine power-operator; warum nicht C++? Zum Beispiel, Fortran und Python verwenden **
und wird Häufig geschrieben werden (in LaTeX z.B.) mit ^
.
InformationsquelleAutor der Frage xersi | 2013-01-31
Du musst angemeldet sein, um einen Kommentar abzugeben.
C++ hat eine power-Betreiber—es ist geschrieben
pow(x, y)
.Ursprünglich C entwickelt wurde, die mit system-software im Auge, und
es war nicht viel brauchen für eine Leistung von operator. (Aber es hat
bitweise Operatoren, wie
&
und|
, die nicht vorhanden sind in einer Mengevon anderen Sprachen.) Es gab einige Diskussionen über das hinzufügen von ein
während der Standardisierung von C++, aber der endgültige Konsens war, mehr
oder weniger:
Könnte es nicht sein
^
da die Priorität falsch war (und dernatürlich, nachdem
2. ^ 8 == 256.
, aber2 ^ 8 == 10
ist nicht sehrangenehm ist).
Könnte es nicht sein
**
werden, weil das vorhandeneProgramme (die vielleicht so etwas wie
x**p
mitx
eineint
undp
eineint*
).Könnte es sein
*^
denn diese Sequenz ist derzeit nicht legalin C oder C++. Dies würde aber erfordern immer noch die Einführung einer
zusätzliche Ebene der Vorrang.
C und C++ hatte schon genug spezielle tokens und Ebenen
Vorrang, und nach Gesprächen mit der Numerik-community,
es wurde festgestellt, dass gab es wirklich nichts falsch mit
pow(x, y)
.Also C++ linken Dinge, wie Sie waren, und dies scheint nicht zu haben
verursacht keine Probleme.
InformationsquelleAutor der Antwort James Kanze
Aus zwei Gründen
Symbol
^
ist reserviert für die bit-Weise xor BetriebKönnen Sie verwenden
std::pow
zur Erreichung der gleichen Funktionalität.Das schöne an C++ ist, dass man die überlastung der
operator
zu tun, was Sie möchten, es zu tun!Jedoch berücksichtigen, dass, wenn Sie das tun, andere Leute, die wissen
C++
und weiß Sie nicht (und ich glaube, es gibt durchaus ein paar von diesen) kann erhebliche Probleme verstehen, Ihren code!InformationsquelleAutor der Antwort Shai
Könnte man sich helfen, wenn Sie wollen
InformationsquelleAutor der Antwort distantTransformer
Weil das die bitweise exklusiv-oder-operator.
Gibt es Funktionen, genannt "pow", die tun, was Sie wollen, obwohl.
InformationsquelleAutor der Antwort Mats Petersson