C & C++ FAQ
|
|
『一方のオペランドが負の値をもつ場合、/演算子の結果が代数的な商以下の最大の整数とするか、または代数的な商以上の最小の整数とするかは、処理系定義とし、%演算子の結果の符号も処理系定義とする。』と定義されています。
たとえば-7を3で割った結果は処理系によって異なり、以下のようなパターンがあり得ることになります。
・-2あまり-1
・-3あまり2
『整数どうしの除算の場合、/演算子の結果は、代数的な商から小数部を切り捨てた値とする。』と定義されています。すなわち《0方向への切捨て》が行われます。
たとえば-7を3で割った結果は、以下のようになります。
・-2あまり-1
『両方の演算対象が負でない場合、その剰余は、負ではない。そうでない場合の剰余の符号は,処理系定義とする。』と定義されています。
たとえば-7を3で割った結果は処理系によって異なり、以下のようなパターンがあり得ることになります。
・-2あまり-1
・-3あまり2
■ 根拠 ■
標準C
| §6.3.5
| Multiplicative operators
|
標準C99
| §6.5.5
| Multiplicative operators
|
標準C++ 1st
| §5.6
| Multiplicative operators
|
標準C++ 2nd
| §5.6
| Multiplicative operators
|