4

マネージ C++ (CLI) でのオーバーフローを回避したいと考えています。C# には unchecked キーワードがあり、C++ ではオーバーフローは例外にはなりません。

参考までに、未チェックの場合はこちらに記載されています。基本的にあなたがする場合:

unchecked
{
      int1 = 2147483647 + 10; //this overflows in CLI but is ok in C# and C++
}

C# ではオーバーフローしませんが、最下位ビットを取得して int に変換します。これは、たとえばハッシュ コードを計算する場合に適しています。

注: 同等の C++ キーワードがないことはわかっていますが、ビット シフトでうまくいくはずです。

4

2 に答える 2

3

メソッドを使用するだけ#pragma unmanagedで、ネイティブ C++ で通常のチェックされていない動作を取得できます。

于 2013-01-24T12:14:52.120 に答える
2

ビット操作とチェックサムには符号なしデータ型を使用します。符号なし動作のラップアラウンド動作は、C++ で明確に定義されています。

于 2013-01-25T05:02:42.417 に答える