以下の内容はhttps://culage.hatenablog.com/entry/20140228/p2より取得しました。


c#では、checkedブロックに含めないとオーバーフロー例外が発生しない

http://dalmore.blog7.fc2.com/blog-entry-43.html
c#では整数型のプラス最大値にを加算しても例外が発生せず、符号なし型のように加算されて利用されるときには2の補数でマイナスとして取得されてしまう。
いままで知らなかったのが恐ろしすぎる挙動。

int num = int.MaxValue;

Console.WriteLine(Convert.ToString(num, 10)); // 2147483647
Console.WriteLine(Convert.ToString(num, 2));  // 0b01111111111111111111111111111111

num = num + 1;

Console.WriteLine(Convert.ToString(num, 10)); // -2147483648
Console.WriteLine(Convert.ToString(num, 2));  // 0b10000000000000000000000000000000

以下のようにcheckedブロックで囲むと、OverflowExceptionが発生する。
ちなみに逆の動きをするuncheckedブロックもある。
あと、VB.NETでは常にOverflowExceptionが発生する挙動らしい。

checked
{
    num = num + 1;
}



以上の内容はhttps://culage.hatenablog.com/entry/20140228/p2より取得しました。
このページはhttp://font.textar.tv/のウェブフォントを使用してます

不具合報告/要望等はこちらへお願いします。
モバイルやる夫Viewer Ver0.14