Embora exista esse operador - **
em Python, eu queria saber por que Java e C ++ não têm um também.
É fácil criar um para as classes que você define em C ++ com sobrecarga de operador (e acredito que isso também é possível em Java), mas ao falar sobre tipos primitivos, como int, double e assim por diante, você terá que usar a biblioteca funcionam como Math.power
(e geralmente têm que converter os dois para dobrar).
Então - por que não definir esse operador para tipos primitivos?
^
operador não corresponde à precedência da exponenciação. Considere a expressão a + b ^ c
. Em matemática, a exponenciação é realizada primeiro ( b ^ c
), depois a potência resultante é adicionada a a
. No C ++, a adição é realizada primeiro ( a + b
) e depois o ^
operador é executado com c
. Portanto, mesmo se você implementou o ^
operador para significar exponenciação, a precedência surpreenderá a todos.
^
é um XOR em C ++. É recomendável que o operador sobrecarregado não faça diferente do que um tipo de dados primitivo faz usando-o.
++
operador ou o !
operador et. al. significar exponenciação. Mas você não pode, de qualquer maneira, porque os operadores sobre os quais você fala aceitam apenas um argumento; exponenciação requer dois argumentos.