模數評估:理解負結果
在C 中,已知模運算子(%) 在某些條件下會產生負值。這可能會令人困惑,特別是當這些操作回到不同的結果時:
std::cout << (-7 % 3) << std::endl; // -1 std::cout << (7 % -3) << std::endl; // 1
為了澄清這種行為,我們參考了 ISO C 標準 (ISO14882:2011)。模運算子傳回第一個操作數(分子)除以第二個操作數(分母)的餘數。
對於第一個運算,(-7) 除以 3,得到商數 - 2,餘數為-1。因此,(-7 % 3) 等於 -1。
對於第二個運算,7 除以 -3,也得到 -2 的商數。但是,由於分母為負,因此餘數的符號是實現定義的。在這種情況下,實作選擇傳回正餘數,即 1。
需要注意的是,模運算子的行為可能會因特定平台和實現的不同而有所不同。一般來說,建議仔細處理負值,並在使用模運算子時考慮不同結果的可能性。
以上是為什麼 C 模運算子 (%) 有時會傳回負結果?的詳細內容。更多資訊請關注PHP中文網其他相關文章!