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

模運算子如何處理負數?

Linda Hamilton
發布: 2024-12-23 03:10:13
原創
609 人瀏覽過

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,模運算子(%) 產生第一個表達式除以第二個表達式的餘數。然而,對於像我們這樣的整數運算元,除法運算子 (/) 執行整數除法,並丟棄任何小數部分。

數學分解

讓我們分解計算為了清楚起見:

  • (-7 / 3) 結果為-2,並且( -2 * 3) 為-6。因此,-7 % 3 產生 -1,因為 (-6 - (-7)) = -1。
  • (7 / -3) 結果為 -2,而 (-2 * -3) 為6. 因此,7 % -3 得到 1,因為 (6 - 7) = 1.

實現定義的行為

需要注意的是,當兩個運算元均為負數時,餘數的符號是實現定義的。然而,從 ISO14882:2011(e) 開始,該行為不再像其前身 ISO14882:2003(e) 那樣明確說明。

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

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