Хотя **
в Python есть такой оператор , мне было интересно, почему в Java и C ++ его тоже нет.
Это легко сделать для классов, которые вы определяете в C ++ с перегрузкой операторов (и я считаю, что это возможно и в Java), но когда речь идет о примитивных типах, таких как int, double и так далее, вам придется использовать библиотеку функция как Math.power
(и обычно приходится приводить оба к удвоению).
Итак, почему бы не определить такой оператор для примитивных типов?
^
оператора не совпадает с приоритетом возведения в степень. Рассмотрим выражение a + b ^ c
. В математике сначала возводится возведение в степень ( b ^ c
), затем результирующая степень прибавляется к a
. В C ++ сначала выполняется сложение ( a + b
), затем выполняется ^
оператор c
. Таким образом, даже если вы реализовали ^
оператор для обозначения возведения в степень, приоритет превзойдет всех.
^
это XOR в C ++. Рекомендуется, чтобы перегруженный оператор не отличался от того, что делает примитивный тип данных, используя его.
++
оператора или !
оператора и т.д. и др. означать экспонату. Но в любом случае вы не можете, потому что операторы, о которых вы говорите, принимают только один аргумент; возведение в степень требует двух аргументов.