Wednesday, November 21, 2007

% operator

我們知道 % operator 就是除法取其餘數的運算子。
例如:

Q = A % 2;

一般來說, Q 值不是 0 就是 1。

不過, 我一直沒有想過如果被除數 A 是負數的時候, 會發生什麼情形? 今天下午我在寫程式時, 就發生了這樣的例子, 害我 debug 很久, 把程式一堆變數的值一一顯示出來看, 才發現這個有趣的問題。原來, 如果被除數 A 是負數的時候, 餘數也會是負數的!
例如:
 
-3 % 2 = -1
 

2 comments:

  1. 印象中,數學上餘數是不可以為負數的,一定要為正數,所以,-3除以2應該等於-2,餘1,

    2*(-2)+1=-3

    這樣才對.(恩,數學上.)

    ReplyDelete
  2. 數學上餘數確實應該都是正的才對!
    不過, 也就是數學上這樣定義, 我們寫程式時, 就直覺認為應該是這樣, 所以才會 debug 很就還找不到錯誤所在。因此, 把這個經驗貼在這邊和大家分享 :)

    ReplyDelete