2011-01-10 53 views

回答

2

如果你來想想在9數學基數他們是同樣的事情,9-2 = 7

+0

@Rafid:我懷疑他是指「模9」等價類。但是,是奇怪的措辭。 – Joey 2011-01-10 10:45:05

7

在C89/90,無論結果是允許的。您從分區和剩餘部分獲得的結果需要「合適」在一起,以便(a/b)*b + a%b == a

從C99開始,需要用負輸入進行整數除法以截斷爲零。儘管如此,除法和餘數的結果仍然是必需的。這意味着(實際上)餘數運算的結果總是與左操作數具有相同的符號,因此25%-9必須產生7,而不是-2。 C++遵循大致相同的路徑,僅落後C幾年。C++ 98/03與C89/90具有相同的規則,因此對於您的輸入,餘數可以是負數也可以是正數(但仍然需要與分工結果一起)。從C++ 11開始,它需要與C99相同的行爲,因此需要與C99相同,因此25% - 9 == 7.其他一些語言(例如Python)要求餘數的結果與右操作數具有相同的符號代替。

+0

Upvoted因爲它是全面和正確的答案,所以對SO很少見。我唯一想念的是討論不同規則的基本原理。 Python的規則意味着很容易計算一組10人需要乘客3人的出租車數量,而C和C++規則意味着計算在當代硬件上最高效。那麼,爲什麼硬件就是這樣的問題。我不知道。 :-) – 2016-01-29 17:37:44