ホームページ >バックエンド開発 >C++ >モジュロ演算子は負の数をどのように処理しますか?

モジュロ演算子は負の数をどのように処理しますか?

Linda Hamilton
Linda Hamiltonオリジナル
2024-12-23 03:10:13572ブラウズ

How Does the Modulo Operator Handle Negative Numbers?

負の値でのモジュロ演算子の動作を理解する

モジュロ演算子は、負のオペランドとともに使用すると異なる結果が得られることが知られています。これをさらに詳しく説明するために、次の操作を考えてみましょう。

std::cout << (-7 % 3) << std::endl; // Output: -1
std::cout << (7 % -3) << std::endl; // Output: 1

ISO 規格による根拠

ISO14882:2011(e) 5.6-4 によると、モジュロ演算子 (%) は、最初の式を 2 番目の式で除算した余りを求めます。ただし、この例のような整数オペランドの場合、除算演算子 (/) は整数の除算を実行し、小数部は破棄されます。

数学的分解

計算を分解してみましょう。明確にするために、

  • (-7 / 3) の結果は -2 になります。そして (-2 * 3) は -6 です。したがって、(-6 - (-7)) = -1 であるため、-7 % 3 の結果は -1 になります。
  • (7 / -3) の結果は -2 となり、(-2 * -3) は次のようになります。 6. したがって、(6 - 7) = として、7 % -3 は 1 を生成します。 1.

実装定義の動作

両方のオペランドが負の場合、剰余の符号は実装定義であることに注意することが重要です。ただし、ISO14882:2011(e) の時点では、その動作は以前の ISO14882:2003(e) のように明示的に規定されていません。

以上がモジュロ演算子は負の数をどのように処理しますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。