尽管有这样的运算符- **
在Python中,我想知道为什么Java和C ++也没有。
使用运算符重载为用C ++定义的类创建一个对象很容易(而且我相信Java中也可以做到这一点),但是在谈论基本类型(例如int,double等)时,您必须使用库功能类似Math.power
(通常必须将两者都强制转换为两倍)。
那么-为什么不为原始类型定义这样的运算符?
^
运算符的优先级与取幂的优先级不匹配。考虑一下表达式a + b ^ c
。在数学中,首先进行(b ^ c
)求幂,然后将得到的幂加到a
。在C ++中,先执行加法(a + b
),然后使用进行^
运算符c
。因此,即使您确实将^
运算符实现为求幂,优先级也会让所有人感到惊讶。
++
运算符或!
运算符等过载的C ++程序员的能力。等 表示指数。但是您还是无法做到,因为您所讨论的运算符仅接受一个参数。求幂需要两个参数。