ホームページ > バックエンド開発 > C++ > モジュロ演算子 (%) が負の数値で異なる結果を生成するのはなぜですか?

モジュロ演算子 (%) が負の数値で異なる結果を生成するのはなぜですか?

Mary-Kate Olsen
リリース: 2024-12-30 18:15:11
オリジナル
797 人が閲覧しました

Why Does the Modulo Operator (%) Produce Different Results with Negative Numbers?

モジュロ演算の負の剰余値

1 つのオペランドが負のモジュロ演算を実行すると、予期しない結果が発生する可能性があります。この記事では、(-7 % 3) と (7 % -3) のような演算が、それぞれ -1 と 1 という一見一貫性のない結果を生成する理由を考察します。

ISO14882:2011 標準によれば、モジュロ演算子 (% ) は、最初のオペランドを 2 番目のオペランドで除算した余りを返します。整数の除算には一般に小数部分の破棄が含まれますが、モジュロ演算子ではオペランドの符号も考慮されます。

(-7 % 3) の場合、-7 / 3 の結果は -2 になります。 -2 に 3 を掛けると -6 が得られ、余りが -1 であることを示します。したがって、(-7 % 3) = -1.

同様に、(7 % -3) の場合、7 / -3 の結果は -2 になります。 -2 に -3 を掛けると 6 になり、余りは 1 になります。したがって、(7 % -3) = 1 となります。

結果が負の場合、モジュロ演算は実装定義の動作を示すことに注意することが重要です。一部の実装では負の符号が保持される場合がありますが、ISO14882:2011 標準ではこれが強制されなくなりました。したがって、負符号 (-7 % 3) はシステムに依存します。

以上がモジュロ演算子 (%) が負の数値で異なる結果を生成するのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート