5

7.8.3。Remainder 演算子に関する C# 仕様では、次のように述べられています。

左のオペランドが最小の int または long 値で、右のオペランドが -1 の場合、System.OverflowException がスローされます。

したがってint.MinValue % -1、OverflowException が発生します。なぜ理解しようとしていますか?

4

1 に答える 1

6

2 の補数演算では、データ型の範囲は (-2**n) から (2**n - 1) です (「n」はデータ型のビット数より 1 少ない数です)。

たとえば、16 ビットの符号付き整数の有効範囲は -32768 (-2**15) から 32767 (2**15 - 1) です。

-32768 / -1 = +32768 で、16 ビット符号付き整数の有効範囲を超えています。

于 2015-11-25T23:20:04.770 に答える