C# で べき算演算子でべき算しようとしてみた

だったら x ^ 2 でビルド通すなよ!! と VBer は叫ぶ。波が逆巻く崖っぷちで。<理不尽w

始まりは、とあるサンプルテストを書いていた時。

Nunit3.xはテスト値をパラメータで渡せるので、同じテストを何回も書かなくていい。

まぁMSTestで似たようなことしようとすると、Excel出てくるわCSVやらでうっとおしい。NUnit3.xにしたのはそこが理由。

くわしくはまた後日に。

閑話休題。

サンプルコードとして、とある数字をいれたら、そのべき算-1の数字を戻す、という、何だかもう良く判らないコンセプトの計算メソッドってのを用意してみた。

private int Plus(int inNum)
{
    return (inNum ^ 2) - 1;
}

んでテストコード書いて

[Test, Sequential]
public void PlusTest([Values(1, 2, 4, 8, 16, 17)] int prm1,
                     [Values(0, 3, 15, 63, 255, 288)] int exp1)
{
    Assert.AreEqual(exp1, SignFull(prm1));
}

動かしたら、NGなんだわ、レッドなんだわ、??となってた。

image

image

Input値が 16 なんだから、16^2 で 256 で、1 ひくから 255 でしょ? んん?

https://docs.microsoft.com/ja-jp/dotnet/csharp/language-reference/operators/index

XOR論理演算子だよ!!!! まじか!!!!!!!!!!!!!!!

ないよ!!! べき算演算子ないよ!!!!

そうだった、こいつはCでVBじゃないw

なので、こうした。

private int Plus(int inNum)
{
    return (inNum * inNum) - 1;
}

で、テストコードを再度実行。

image

うん、グリーンだよ。

まぁ考えりゃ、VBとCを一緒にしようなんて考え方自体がアレでそれだし、そこは空気読め、自分w

ちな、べき算はdouble型ならSystem.MathクラスのPowで出来るんだけれど、intだしね、値もそんな巨大じゃないしお遊びだからそのまま計算した。もちろん、業務アプリや納品プログラムとかの時はきちんと桁と型を考えて責任もってキャストとテストするのがセオリーってことでw