转载自:http://blog.csdn.net/cmutoo/article/details/6492787
在VC++中计算 -1%3 其结果是 -1 而不是 我所要的 2 。
在格子坐标中,如果希望超过边界的数从另一面回到视野中,取余是非常有用的作法:
原数 | -2 | -1 | 0 | 1 | 2 | 3 | 4 |
取余 | 1 | 2 | 0 | 1 | 2 | 0 | 1 |
-1÷3 = -1……2 即 -3+2=-1
而由于VC++在取整的时候,默认是将小数部分舍去,所以 -1/3=-0.333…≈0 于是 余数为 -1-0=-1
如果想要得到正整数的余数怎么办?
Solution by Mutoo:
- // x%=n;
- x=(x%n+n)%n