对负数取余的处理

转载自: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:

Code:
  1. // x%=n;  
  2. x=(x%n+n)%n  
posted on 2013-01-04 15:36  zmmr  阅读(645)  评论(0编辑  收藏  举报