首頁 > 後端開發 > C++ > 為什麼模運算子 (%) 會對負數產生不同的結果?

為什麼模運算子 (%) 會對負數產生不同的結果?

Mary-Kate Olsen
發布: 2024-12-30 18:15:11
原創
797 人瀏覽過

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

模運算中的負餘數

進行模運算時,如果一個操作數為負,則可能會出現意外結果。本文探討了為什麼 (-7 % 3) 和 (7 % -3) 等運算分別會產生看似不一致的 -1 和 1 結果。

依據 ISO14882:2011 標準,模運算子 (% ) 提供第一個運算元除以第二個運算元後的餘數。雖然整數除法通常會捨棄小數部分,但取模運算子也會考慮運算元的符號。

在 (-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中文網其他相關文章!

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