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++ 则是先定整数除法如何处理再据此定义余数, 所以方向上就会不一样