1

表达式的所有可能结果是什么,整数变量(n % m)在哪里?nm

我以为是0(m-1)但不确定。

4

3 回答 3

1

假设m是一个整数,如果可能的值的范围是-min(abs(n), m - 1)through min(abs(n), m - 1),包括在内。

因此,如果n为零或正且大于m(典型情况),则范围将包含0在内m-1

如果n为零或负数且其绝对值大于m,则范围为-(m-1)0包括 。

在所有情况下,如果n的绝对值低于m,则上面设置的界限由m-1设置n代替。也就是说,如果n为零或正且小于m,则范围为0n,包括 (等等)。

于 2013-11-07T11:55:55.417 回答
0

的结果n % m可以在 ]-m、+m[ 的范围内。

原因:java 中模运算符的定义类似于对于所有 int 值 n 和 m,以下必须始终为真: (n / m) xm + (n % m) == n

但如果 n 为负数,(n / m) * m则始终等于或大于 n,因此n % m必须为负数才能满足上述等式。

规则是:余数运算的结果(如果非零)始终与左操作数具有相同的符号。

于 2013-11-07T11:57:44.257 回答
0

让我们以 positve n 和 m 为例,您的答案是正确的,但这里有一些情况......

-1%10=-1
-1%-10=-1
1%-10=1
1%10=1

正百分比正返回值之间0 to m-1

当 n <= m 时,负 % 负返回值介于 `0 之间,否则它将介于 0 到 n+1 之间

于 2013-11-07T11:58:52.583 回答