许多语言都有电力运营商; 为什么不用C++?例如,Fortran和Python使用**
并且通常使用(例如在LaTeX中)编写^
.
Jam*_*nze 46
C++确实有一个幂运算符 - 它是写的pow(x, y)
.
最初,C的设计考虑了系统软件,并且不需要电源操作员.(但它有一些按位运算符,比如&
和|
许多其他语言都没有.)在C++的标准化过程中有一些关于添加一个的讨论,但最终的共识或多或少是:
它不可能^
,因为优先级是错误的(当然,有2. ^ 8 == 256.
,但2 ^ 8 == 10
也不是很愉快).
它不可能**
,因为这会打破现有的程序(可能有一些东西x**p
,有x
一个
int
和p
一个int*
).
可能是*^
因为这个序列目前在C或C++中不合法.但这仍然需要引入额外的优先级.
C和C++已经有足够的特殊令牌和优先级,并且在与数字社区讨论之后,得出的结论是,确实没有任何问题
pow(x, y)
.
因此,C++保留了原样,这似乎没有造成任何问题.
有两个原因
该符号^
保留用于按位xor 运算
您可以使用它std::pow
来实现相同的功能.
关于C++的好处是你可以重载operator
它来做任何你喜欢做的事情!
template< typename T >
T operator^( T x, T y ) {
return std::pow( x, y );
}
Run Code Online (Sandbox Code Playgroud)
但是考虑到当你这样做时,其他知道C++
和不认识你的人(我相信其中有很多人)可能在理解你的代码时会遇到很大的问题!