なぜ整数オーバーフローが発生するのでしょうか? 質問する

なぜ整数オーバーフローが発生するのでしょうか? 質問する

この質問のトピックは、VS で C# の算術オーバーフローをチェックし、例外をスローする方法です。C# オーバーフローが機能しませんか? オーバーフロー チェックを有効にするにはどうすればいいですか?

コメントの 1 つに奇妙なことが書かれていて、かなり賛成票が集まりました。ここで助けていただければ幸いです。

また、checked キーワードを使用してステートメントまたはステートメント セットをラップし、算術オーバーフローが明示的にチェックされるようにすることもできます。プロジェクト全体のプロパティを設定することは、多くの場合オーバーフローがかなり妥当な予測であるため、少しリスクがあります。

私はハードウェアについてはあまり詳しくありませんが、オーバーフローはレジスタの動作に関係していることは知っています。オーバーフローは未定義の動作を引き起こすので、可能な限り防止する必要があると常に思っていました。(「通常の」プロジェクトでは、悪意のあるコードを記述するわけではありません)

なぜあなたは期待するオーバーフローが発生する可能性があり、その可能性があるのになぜそれを常に防止しないのでしょうか? (対応するコンパイラ オプションを設定することによって)

ベストアンサー1

私が欲しいオーバーフローはハッシュ コードを計算しています。ここでは、結果の実際の数値の大きさはまったく問題になりません。これは実質的に、算術演算で操作しているビット パターンにすぎません。

プロジェクト全体で算術演算が有効になっていることを確認しました野田タイム- 間違ったデータを返すよりも例外を投げるほうがいいと思います。オーバーフローが望ましいことはほとんどないと思いますが...いつものデフォルトなので、チェックなしの算術演算をデフォルトのままにしておきます。もちろん、速度の低下もあります...

おすすめ記事