Frage

Was sind alles mögliche Ergebnisse des Ausdrucks (n % m), wo n und m Sind ganzzahlige Variablen?

ich dachte es wäre 0 zu (m-1) aber unsicher.

War es hilfreich?

Lösung

Annahme m ist ein positiv Ganzzahl ist der Bereich, wenn möglich, Werte sind -min(abs(n), m - 1) durch min(abs(n), m - 1), inklusive.

Also wenn n ist Null oder positiv und es ist größer als m (Der typische Fall) wird der Bereich sein 0 zu m-1 inklusiv.

Wenn n ist Null oder negativ und sein absoluter Wert ist größer als m, der Bereich wird sein -(m-1) durch 0, inklusive.

In allen Fällen, wenn nDer absolute Wert ist niedriger als m, die oben genannte Grenze von festgelegt von m-1 ist von n stattdessen. Das heißt, wenn n ist Null oder positiv und weniger als m, der Bereich ist 0 zu n, inklusiv (und so weiter).

Andere Tipps

Nehmen wir Beispiele für positives N und M Ihre Antwort sind richtig, aber hier einige Fälle ...

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

Positive % positive Renditewerte zwischen 0 to m-1

Negative % Negative Rückgabewerte zwischen `0, wenn n <= m sonst zwischen 0 und n+1 liegt

Das Ergebnis von n % m kann im Bereich von] -m, +m [.

Grund: Die Definition des Modulo -Operators in Java ist so etwas wie Für alle int -Werte n und m muss Folgendes immer wahr sein: (n / m) xm + (n % m) == n.

Aber wenn n negativ ist, (n / m) * m wird immer gleich oder größer sein als n, also n % m Muss negativ sein, um die obige Gleichung zu erfüllen.

Die Regel lautet: Das Ergebnis des Restbetriebs (falls ungleich Null) hat immer das gleiche Zeichen wie der linke Operand.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top