重複の可能性:
C++ 演算子 % 保証
C++ 98/03 で
5.6-4
二項 / 演算子は商を生成し、二項 % 演算子は最初の式を 2 番目の式で割った剰余を生成します。/ または % の 2 番目のオペランドがゼロの場合、動作は未定義です。それ以外の場合、(a/b)*b + a%b は a に等しくなります。両方のオペランドが負でない場合、残りは負ではありません。そうでない場合、剰余の符号は実装定義です。
C++ 11 の場合:
5.6 -4
二項 / 演算子は商を生成し、二項 % 演算子は最初の式を 2 番目の式で割った剰余を生成します。/ または % の 2 番目のオペランドがゼロの場合、動作は未定義です。整数オペランドの場合、/ 演算子は小数部分を破棄した代数商を生成します。81 商 a/b が結果の型で表現できる場合、(a/b)*b + a%b は a に等しくなります。
符号ビットの実装定義が欠落していることがわかるように、それはどうなりますか?