はなちるのマイノート

Unityをメインとした技術ブログ。自分らしくまったりやっていきたいと思いますー!

【C#】オーバーフローを検知する

はじめに

今回はオーバーフローの検知をしてみる記事になります!

そのためにはcheckedというキーワードを用いることでできるようになります。

早速みていきましょう。

デフォルトはどうなるか

まずはデフォルトでオーバーフローさせるとどうなるかみてみましょう。

int a = int.MaxValue;
a = a + 1;
Console.WriteLine(a);
-2147483648

本来は2147483647 + 1 = 2147483648であるはずですが、オーバーフローして負の数になってしまっています。

これはデフォルトではオーバーフローはすべて無視(unchecked)される性質にあります。

オーバーフローを検知する

checkedをつけて再度実験してみましょう。

checked
{
    int a = int.MaxValue;
    a = a + 1;
    Console.WriteLine(a);
}

するとエラーが出てきます。

f:id:hanaaaaaachiru:20200307205221p:plain


これでオーバーフローを検知してエラーを吐き出すことができました。

さいごに

階乗や累乗といった大きい計算ではオーバーフローがおきがちなので、是非うまく活用してみてください。

ではまた。