7.8.3。剰余演算子についてC#仕様のそれは次のように述べている:int.MinValue%-1が原因でオーバーフロー例外が発生する理由
左のオペランドが最小のintまたはlong値であり、右 オペランドがSystem.OverflowExceptionがスローされ、-1の場合。
したがって、int.MinValue % -1
はオーバーフロー例外になります。なぜ私は理解しようとしていますか?
7.8.3。剰余演算子についてC#仕様のそれは次のように述べている:int.MinValue%-1が原因でオーバーフロー例外が発生する理由
左のオペランドが最小のintまたはlong値であり、右 オペランドがSystem.OverflowExceptionがスローされ、-1の場合。
したがって、int.MinValue % -1
はオーバーフロー例外になります。なぜ私は理解しようとしていますか?
2の補数演算では、データ型の範囲は(-2 ** n)から(2 ** n - 1)(nはデータ型のビット数より1少ない)です。
たとえば、16ビット符号付き整数の有効範囲は、-32768(-2 ** 15)〜32767(2 ** 15-1)です。
-32768/-1 = +32768これは、16ビット符号付き整数の有効範囲を超えています。
Javaでは、結果は仕様によって「0」であり、Cでは操作が未定義の動作を呼び出すことに注意してください。 – ouah