Während es einen solchen Operator gibt - **
in Python habe ich mich gefragt, warum Java und C ++ auch keinen haben.
Es ist einfach, eine für Klassen zu erstellen, die Sie in C ++ mit Operatorüberladung definieren (und ich glaube, dass dies auch in Java möglich ist), aber wenn Sie über primitive Typen wie int, double usw. sprechen, müssen Sie library verwenden funktionieren wie Math.power
(und müssen in der Regel beide auf double werfen).
Also - warum nicht einen solchen Operator für primitive Typen definieren?
^
Operators nicht mit der Priorität der Exponentiation übereinstimmt. Betrachten Sie den Ausdruck a + b ^ c
. In der Mathematik wird zuerst die Exponentiation durchgeführt ( b ^ c
), dann wird die resultierende Potenz addiert a
. In C ++ wird die Addition zuerst ausgeführt ( a + b
) und dann der ^
Operator mit ausgeführt c
. Selbst wenn Sie den ^
Operator als Exponentiation implementiert haben , wird der Vorrang alle überraschen.
^
ist ein XOR in C ++. Es wird empfohlen, dass überladene Operatoren nicht anders vorgehen sollten, als ein primitiver Datentyp es verwendet.
++
Operator oder den !
Operator et überlastet . al. Exponentation bedeuten. Dies ist jedoch nicht möglich, da die Operatoren, über die Sie sprechen, nur ein Argument akzeptieren. Potenzierung erfordert zwei Argumente.