class TestMod{
public static void main(String[] args){
int x = 3, y = 10;
System.out.println(y-- % ++x);
System.out.println(-y % -x);
}
}
为什么第二个输出的结果是-1,为什么不是正数,不是负负得正嘛?
在Java中的取模运算,遵循这样的规律(自己总结的),就拿你上面的-10%-3来说吧,首先把所有的负号去掉,然后取模,结果是1,然后去看被除数的正负号,当然了,结果的正负号,就是根据这个取的,与被除数的一致,所以取负号。。。
哥们,取余运算不是相除!
[code="java"]class TestMod{
public static void main(String[] args){
int x = 3, y = 10;
System.out.println(y-- % ++x);//y=9 x=4
System.out.println(-y % -x); //
}
} [/code]
x mod y等于 x 减去 (y 乘上 x与y的商的下界)。
在这里,-y与-x商的下界为2。所以,
相当如-9-(-4*2)=-1
[quote]x mod y等于 x 减去 (y 乘上 x与y的商的下界)。
[/quote]
上面这是规则。公式如下:
[img]http://chinakite.iteye.com/upload/picture/pic/33/ea0d6905-ca90-41be-91a9-6e2f218960b3.jpg[/img]