C# 整数のオーバーフロー処理
プロジェクト オイラーの問題 10 のコンテキストで、整数 (int) を使用すると予期しない動作が発生しました。 200 万未満の素数の合計を計算する変数。結果が int の最大値を超えているにもかかわらず、C# ではオーバーフロー例外が発生しませんでした。
他のプログラミング言語とは異なり、C# の整数演算は、デフォルトではオーバーフロー時に例外をスローしません。これは、オーバーフローが発生した場合、結果がデータ型の範囲内の値に単純に「ラップアラウンド」されることを意味します。 int の場合、結果は負の値の範囲内にあり、求めていた実際の合計とは程遠いものになります。
オーバーフローを明示的に処理するには、2 つのオプションがあります:
int result = checked(largeInt + otherLargeInt);
この場合、オーバーフローは System.OverflowException をスローします。
checked の反対は unchecked であり、オーバーフロー チェックが抑制されます。これは、プロジェクト設定でオーバーフロー チェックが有効になっている場合にのみ使用してください。
以上がC# で整数オーバーフローを処理するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。