负数的取模运算 C++

-3%2等于-1吗?
不是的话,如何运算?

答案是:不同编译器会有不同的值。

VC++我刚被坑了一下。它的值是-1. 答案应该如你所料。就是拿3除以2取余数之后加个符号。
其他有很多编译器会给出1. 这是真正的模运算。它是把-3不断执行加2操作,直到所得数值在大于等于0小于2的范围内。
最简单的模运算就是钟表的模12运算。12点和0点是等价的。那么 -3 % 12等于多少?你从0, 也就是12开始,往逆时针方向拨3,得到的就应该是-3在12下的模。0点(即12点)往前拨3显然是9.也就是说,-3%12=9. 而VC++会给出-3.

不同编译器算法不一样,要使用负数的模运算时应先在当前使用的编译器上进行一些简单实验。
温馨提示:答案为网友推荐,仅供参考
第1个回答  2010-03-27
答案是为-1
相似回答