2012-02-06 67 views
3

我的C代碼測試模運算夫婦一行,如下所示:模運算符結果的符號?

// line 1 
printf("%d\n", 5%(-3)); => output: 2 
// line 2 
printf("%d\n", -5%3); => output: -2 

我知道模的符號取決於分子的跡象,但我很好奇,爲什麼不這樣呢?

+0

請參閱http://stackoverflow.com/a/6385400/253056 – 2012-02-06 14:42:29

+0

[在解密程序中使用模數與負數解決的問題]的可能重複(http://stackoverflow.com/questions/6385352/problem-using-modulo -with-negative-numbers-in-decryption-program) – 2012-02-06 14:42:45

+2

這不是投票的問題。這是一個模運算符如何工作的問題,並且是一個很好的問題。 – 2012-02-06 14:43:35

回答

0

從普爾雷數學的角度來看,讓我們來看看它是這樣的:

5/-3 = (-3 * -1) + 2 
-5/3 = (3 * -1) - 2 

希望這回答了你的問題。

+0

純粹的數學觀點也允許「-5/3 =(3 * -2)+1」,所以你不能*完全回答這個問題,除非你解釋如何'/'也可以。 – hugomg 2012-02-06 14:52:37

+2

C中%的行爲不像您從數學角度期望的那樣。 – 2012-02-06 14:54:39

+0

@missingno是真的,但我會假設OP有數學基礎知識,因爲這是編程的基礎。 – 2012-02-06 14:56:21