Many languages have a power operator; why doesn't C++? For example, Fortran and Python use **
and is commonly written (in LaTeX, for example) using ^
.
C++ does have a power operator—it's written pow(x, y)
.
Originally, C was designed with system software in mind, and
there wasn't much need for a power operator. (But it has
bitwise operators, like &
and |
, which are absent in a lot
of other languages.) There was some discussion of adding one
during standardization of C++, but the final consensus was more
or less:
It couldn't be ^
, because the priority was wrong (and of
course, having 2. ^ 8 == 256.
, but 2 ^ 8 == 10
isn't very
pleasant either).
It couldn't be **
, because that would break existing
programs (which might have something like x**p
, with x
an
int
, and p
an int*
).
It could be *^
, because this sequence isn't currently legal
in C or C++. But this would still require introducing an
additional level of precedence.
C and C++ already had enough special tokens and levels of
precedence, and after discussions with the numerics community,
it was concluded that there really wasn't anything wrong with
pow(x, y)
.
So C++ left things as they were, and this doesn't seem to have caused any problems.