モジュロ演算子の結果が負の値になる: 数学的説明
モジュロ演算子 % を負の数値に適用すると、条件に応じて異なる結果が生成される可能性があります。実装について。これは不可解かもしれませんが、モジュロ演算子の数学的定義を理解すると、この動作を解明できます。
ISO14882:2011(e) 5.6-4 によると、モジュロ演算子は、除算の余りを返します。最初の表現を 2 番目の表現で表現します。 2 番目のオペランドがゼロの場合、動作は未定義です。整数オペランドの場合、商は、小数部分が切り捨てられた代数商です。
これを説明するために、次の例を考えてみましょう。
std::cout << (-7 % 3) << std::endl; // -1 std::cout << (7 % -3) << std::endl; // 1
(-7 % 3) = -1
(7 % -3) = 1
どちらの場合も、代数商は同じ (-2) です。両方のオペランドの符号が異なる場合、剰余の違いは実装で定義された剰余の符号から生じます。
以上がモジュロ演算子が負の数で負の結果を生成するのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。