Heim >Backend-Entwicklung >C++ >Warum erzeugt der Modulo-Operator negative Ergebnisse mit negativen Zahlen?

Warum erzeugt der Modulo-Operator negative Ergebnisse mit negativen Zahlen?

Barbara Streisand
Barbara StreisandOriginal
2024-12-17 09:55:25259Durchsuche

Why Does the Modulo Operator Produce Negative Results with Negative Numbers?

Modulo-Operator führt zu negativen Werten: Eine mathematische Erklärung

Der Modulo-Operator %, wenn er auf negative Zahlen angewendet wird, kann je nach Ergebnis unterschiedliche Ergebnisse liefern über die Umsetzung. Das kann rätselhaft sein, aber das Verständnis der mathematischen Definition des Modulo-Operators kann Aufschluss über dieses Verhalten geben.

Gemäß ISO14882:2011(e) 5.6-4 gibt der Modulo-Operator den Rest der Division von zurück ersten Ausdruck durch den zweiten. Wenn der zweite Operand Null ist, ist das Verhalten undefiniert. Für ganzzahlige Operanden ist der Quotient der algebraische Quotient, wobei alle Bruchteile weggelassen werden.

Um dies zu veranschaulichen, betrachten Sie die folgenden Beispiele:

std::cout << (-7 % 3) << std::endl; // -1
std::cout << (7 % -3) << std::endl; // 1

(-7 % 3) = -1

  • -7 dividiert durch 3 ergibt einen algebraischen Quotienten von -2.
  • -2 multipliziert mit 3 ergibt -6.
  • Der Rest von -7 dividiert durch 3 ist daher -1.

( 7 % -3) = 1

  • 7 dividiert durch -3 ergibt einen algebraischen Quotienten von -2.
  • -2 multipliziert mit -3 ergibt 6.
  • Der Rest von 7 geteilt durch -3 ist daher 1.

Beachten Sie, dass in beiden In einigen Fällen ist der algebraische Quotient derselbe (-2). Der Unterschied im Rest ergibt sich aus dem durch die Implementierung definierten Vorzeichen des Rests, wenn beide Operanden unterschiedliche Vorzeichen haben.

Das obige ist der detaillierte Inhalt vonWarum erzeugt der Modulo-Operator negative Ergebnisse mit negativen Zahlen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn