首頁 > 後端開發 > C++ > 如何正確處理負模運算?

如何正確處理負模運算?

Susan Sarandon
發布: 2025-01-13 13:22:43
原創
598 人瀏覽過

How Do I Handle Negative Modulo Operations Correctly?

應對負模的挑戰

處理負數時,模運算子 (%) 可能會很棘手。雖然它可以順利地傳回正整數的餘數,但它對負數的行為通常會導致混亂。 此運算符提供除法後的餘數。

負模問題

考慮一個長度為 3 的陣列:

<code>i % 3 =
4 -> 1
3 -> 0
2 -> 2
1 -> 1
0 -> 0
-1 -> -1
-2 -> -2
-3 -> 0
-4 -> -1</code>
登入後複製

注意負餘數如何保持負數,這與在正範圍內循環的正餘數不同。

負模的解

為了確保負數能如預期表現(環繞),需要一個自訂函數:

<code class="language-c++">int GetArrayIndex(int i, int arrayLength) {
    int r = i % arrayLength;
    return (r < 0) ? (r + arrayLength) : r;
}</code>
登入後複製

如何運作

只有當 arrayLength 為負數時,此函數才巧妙地將 r 加到餘數 (r)。這將負餘數「包裹」到正範圍內,模仿所需的模行為。

實際應用

讓我們用三元素數組來測試函數:

GetArrayIndex( 4, 3) -> 1 GetArrayIndex( 3, 3) ->; 0 GetArrayIndex( 2, 3) ->; 2 GetArrayIndex( 1, 3) ->; 1 GetArrayIndex( 0, 3) ->; 0 GetArrayIndex(-1, 3) ->; 2 GetArrayIndex(-2, 3) ->; 1 GetArrayIndex(-3, 3) ->; 0 GetArrayIndex(-4, 3) ->; 2

這個自訂函數有效地處理負模運算,提供一致且可預測的結果。 現在您可以自信地使用負模而不會遇到意外行為。

以上是如何正確處理負模運算?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板