ホームページ >バックエンド開発 >C++ >負の数値でモジュラス演算子を使用するときに確実に正の結果を得るにはどうすればよいですか?

負の数値でモジュラス演算子を使用するときに確実に正の結果を得るにはどうすればよいですか?

Mary-Kate Olsen
Mary-Kate Olsenオリジナル
2025-01-13 13:42:44252ブラウズ

How to Ensure Positive Results When Using the Modulus Operator with Negative Numbers?

負の値を法とする問題を賢く解決します

多くのプログラミング言語では、ある数値を別の数値で割った後の剰余を計算するために使用されるモジュロ演算子 (%) が提供されています。ただし、この演算子を負の数に適用すると、予期しない結果が発生する可能性があります。

たとえば、C や Java などの言語で -1 % 3 を実行すると、結果は期待される 2 ではなく -1 になります。これは、モジュロ演算子は通常、除算演算の剰余を返し、負の被除数の場合は負の値になる可能性があるためです。

この問題を克服して望ましい動作を得るには、カスタム mod 関数を実装できます。

<code class="language-c++">int mod(int x, int m) {
    return (x % m + m) % m;
}</code>

この関数を使用すると、次の計算結果が期待どおりになります:

输入 预期输出 函数输出
-1 % 3 2 mod(-1, 3) = 2
-2 % 3 1 mod(-2, 3) = 1
-3 % 3 0 mod(-3, 3) = 0

この関数の仕組みは、最初のモジュロ演算で得られた負の値にモジュラスを加算することで、結果が常に正になるようにすることです。

以上が負の数値でモジュラス演算子を使用するときに確実に正の結果を得るにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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