了解模運算子對負值的行為
已知模運算子與負運算子一起使用時會產生不同的結果。為了深入研究這一點,讓我們考慮以下操作:
std::cout << (-7 % 3) << std::endl; // Output: -1 std::cout << (7 % -3) << std::endl; // Output: 1
根據ISO 標準的基本原理
根據ISO14882:2011(e) 5.6-4,模運算子(%) 產生第一個表達式除以第二個表達式的餘數。然而,對於像我們這樣的整數運算元,除法運算子 (/) 執行整數除法,並丟棄任何小數部分。
數學分解
讓我們分解計算為了清楚起見:
實現定義的行為
需要注意的是,當兩個運算元均為負數時,餘數的符號是實現定義的。然而,從 ISO14882:2011(e) 開始,該行為不再像其前身 ISO14882:2003(e) 那樣明確說明。
以上是模運算子如何處理負數?的詳細內容。更多資訊請關注PHP中文網其他相關文章!