首頁 >後端開發 >C++ >使用負數模運算子時如何確保正結果?

使用負數模運算子時如何確保正結果?

Mary-Kate Olsen
Mary-Kate Olsen原創
2025-01-13 13:42:44250瀏覽

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

巧妙解決負數取模難題

許多程式語言都提供取模運算子(%),用於計算一個數除以另一個數的餘數。然而,當將此運算符應用於負數時,可能會出現意想不到的結果。

例如,在 C 或 Java 等語言中執行 -1 % 3 時,結果為 -1,而不是預期的 2。這是因為取模運算子通常會傳回除法運算的餘數,而對於負被除數,則該餘數可能為負。

為了克服這個問題並獲得期望的行為,可以實現一個自訂的 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中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn