首頁 > 後端開發 > C++ > 為什麼模運算子使用負數會產生負結果?

為什麼模運算子使用負數會產生負結果?

Barbara Streisand
發布: 2024-12-17 09:55:25
原創
210 人瀏覽過

Why Does the Modulo Operator Produce Negative Results with Negative Numbers?

模運算子產生負值:數學解釋

模運算子% 當應用於負數時,可以產生不同的結果,具體取決於關於實施。這可能令人費解,但了解模運算子的數學定義可以闡明這種行為。

根據 ISO14882:2011(e) 5.6-4,模運算子傳回除法的餘數第一個表達式由第二個表達。如果第二個操作數為零,則行為未定義。對於整數運算元,商數是捨去任何小數部分的代數商。

為了說明這一點,請考慮以下範例:

std::cout << (-7 % 3) << std::endl; // -1
std::cout << (7 % -3) << std::endl; // 1
登入後複製

(-7 % 3) = -1

  • - 7 除以3 得到-2 的代數商。
  • -2 乘以 3 得到 -6。
  • -7 除以 3 的餘數為 -1。

(7 % -3) = 1

  • 7 除以 -3 得到代數商 -2。
  • -2 乘以 -3 得到 6。
  • 餘數因此 7 除以 -3 等於 1。

請注意,在情況下,代數商是相同的 (-2)。當兩個運算元具有不同符號時,餘數的差異是由實現定義的餘數符號所造成的。

以上是為什麼模運算子使用負數會產生負結果?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

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