java运算问题

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]