電卓祭には見事に乗り遅れまして、いっそのことこのまま傍観を決め込もうかと思っているのですが…
そういえば、要件にべき乗のサポートは無かったなぁ、と。
べき乗というのは変態的な演算子でして、一般的には右結合性を持ちます。
右結合性というのは、同じ優先順位の演算子が連続して書かれた場合、右から順に解釈してくるというものです。
例えば、3 - 1 + 1 - 2 の + と - は優先順位が同じで、これは左から解釈してきますから、+ と - は左結合の演算子です。* と / も同様。
べき乗が右結合とはどういうことかというと、例えば(べき乗の演算子を ^ として)2 ^ 2 ^ 3 は、2 ^ ( 2 ^ 3 ) = 2 ^ 8 = 256 になります。
左結合だと、2 ^ 2 ^ 3 = ( 2 ^ 2 ) ^ 3 = 4 ^ 3 = 64 というように、答えが違ってきてしまいます。
ちなみに、Windowsに付属の電卓は、べき乗を左結合として扱うようですw
また、べき乗演算子は、単項の - 演算子よりも優先度が高いという点も変態的です。まぁ、この辺は単項 - の方が強いという仕様もアリだとは思いますが、世間一般的には - より強いようです。
どういうことかというと、-2 ^ 2 は -( 2 ^ 2 ) = -4 となるということです。個人的には ( -2 ) ^ 2 = 4 となる方が好みなのですが、何か理由があるんでしょうかね。
べき乗は突き詰めると(特に、負の数や分数までサポートを広げると)非常に奥が深いものです。一例を示しましょうか。
- x-1 = 1/x
- x-n = 1/xn
- x1/2 = √x
- x1/n = n√x
などという性質があります(実数乗は高校数学までの知識ではわかりませんww)