c和c++的/和% 並不是常見的除法定義
例如下面這兩行
printf("5/3 = %d...%d\n", 5/3, 5%3);
printf("(-5)/3 = %d...%d\n", (-5)/3, (-5)%3);
會跑出
5/3 = 1...2
(-5)/3 = -1...-2
我實在是想不到在什麼情況下 需要讓我的餘數是負的
// 反觀python的//和% 定義就和數學上常用的定義一樣
請問當初究竟為什麼要把/和%定義成這樣?
我試著google過了 沒找到答案orz
作者:
LPH66 (-6.2598534e+18f)
2018-05-02 02:50:00而且會取 trunc() 其實也是因為處理器實作多這樣做的關係在 C99/C++11 之前 C/C++ 是不規定你要怎麼取的就是處理器怎麼做我們就怎麼做的意思話說回來我看起來 python 好像是反過來定, 先定餘數恆非負然後據此定義整數除法; C/C++ 則是先定整數除法如何處理再據此定義餘數, 所以方向上就會不一樣